W ósmym odcinku pora na test: czy da się rozmawiać z dwoma osobami jednocześnie? Wychodzi na to że chyba tak :).
Dzisiaj goszczę dwóch Pawłów. Paweł Łukasik bloguje, występuje na konferencjach, jest założycielem dotnetomaniaka, jednym z organizatorów Wroc.NET oraz opiekuje się devPytaniami a tweetuje jako @pawel_lukasik. Paweł Sawicz również bloguje i jest prelegentem, a dodatkowo jednym z trzech organizatorów świetnej inicjatywy dotnetconfPL… a to wszystko robi w połączeniu ze studiami, tweetując jako @sawiczpawel.
Zawsze przedstawiam swoich Gości dość szczegółowo prezentując ich działalność i osiągnięcia, ale dzisiaj ma to szczególne znaczenie. Tematem naszej rozmowy jest bowiem community – szeroko rozumiana społeczność programistów. Chcesz wiedzieć dlaczego ludzie udzielają się w społeczności? Albo “jak zacząć”, niezależnie od tego czy jesteś studentem czy starszym już dziadem? To zapraszam do słuchania. W trakcie odcinka wymieniamy też kilka ciekawych “inicjatyw społecznościowych” wartych poznania.
Ogłoszenie: wspominałem o tym na Twitterze, Facebooku oraz aktualnym odcinku, ale podlinkuję i tutaj… DevTalk jest gotów na komercyjną współpracę! Pomysłów mam masę, plany ambitne, a do rozwoju potrzeba… wiadomo czego. Zerknijcie zatem na stronę “Współpraca“, podeślijcie linka w swoich firmach komu trzeba, niechaj się kręci! Dziękuję wszystkim za dotychczasowe życzenia powodzenia oraz szerzenie tego słowa. Aż miło się robi. Ciekawostka: pierwszego partnera już mamy, logo do obejrzenia w pasku bocznym :).
Konkurs: Miło mi również poinformować, że DevTalk zostaje “partnerem medialnym” bardzo ciekawych konferencji programistycznych. W chwili obecnej szczególnie polecam Waszej uwadze konferencję WROC#. Zapowiada się po prostu znakomicie. 12 marca 2015 nad Wrocławiem zapłonie wielki znak #, a wszystkie programistyczne dusze połączą się w dzikim tańcu. Rejestracja na tę imprezę startuje dzisiaj, ale znając życie: dostanie wejściówek nie będzie łatwe. Good news everyone: DevTalk ma do rozdania dwa bilety! Jeden z nich powędruje do osoby, która zrobi na Twitterze retweet informacji o tym poście (uwaga: @devtalkpl musi być wspomniany w tweecie, żebym zobaczył informację o tym; najlepiej zrobić RT tweeta puszczonego z konta @devtalkpl). Drugi z kolei bilet, jak łatwo się domyślić, dostanie jedna z osób które zrobią “share” tego posta (uwaga: share musi mieć ustawienie prywatności “public”, żebym został o tym poinformowany; najlepiej kliknąć “share” na poście puszczonym na fanpage devtalkpl). Na aktywności te czekam do środy, wtedy podam wyniki na odpowiednich kanałach.
Czytaj dalej…
Paweł Klimczyk • 28/03/2015
@Piotr Perak:
Odnosnie roznic stub/mock – dobrze piszesz. Ja chcialem rozwinac troche wypowiedz i pokazac wiekszy kontekst. W programowaniu przewaznie uzywam mockow.
Metody prywatne wymagajace testowania – kurde, zrobilm bym z tego klase osobna, bo widocznie to co jest w srodku robi sporo i powinnno byc wyabstrahowane.
@Grzegorz:
W tym podkascie chodzilo o pokazanie samej idei mockow.
UI Testing – temat na osobny podcast
@Grzesiek Gałęzowski:
Growing Object Oriented Software Guided By Tests – to juz temat TDD.
Ksiazke przeczytam :). Nawiazajac do Twojego podejscia do mockowania DateTime i wprowadzania abstrakcji to jest ono dobre, gdy buduje sie system. Problem pojawia sie gdy lądujesz w projekcie, gdzie kod ma juz kilka lat i dodajesz nowe funkcje. Wtedy trudno abstrahowac DateTime i (może) łatwiej mockować to co jest.
Ciesze sie, że wywiązała się tutaj taka dyskusja.
Grzesiek Gałęzowski • 03/04/2015
@Paweł Klimczyk GOOS to temat TDD, ale bardzo mocno mocków właśnie (choć nie tylko). Z wstępu do książki: “Our original motivation for writing the book was to finally explain the technique of using mock objects, which we often see misunderstood.”. Chociaż owszem, mocków można używać inaczej trochę niż jest opisane w tej książce, np. do starego kodu. Tylko wtedy nie są to takie mocki w sensie stricte, gdyż oryginalne mocki rzucały wyjątki gdy otrzymały niespodziewane wywołania (w świecie C# i Javy uważa się obecnie to podejście za przestarzałe i prowadzące do kruchych testów, natomiast JMock – biblioteka autorów GOOS – wciąż opiera się na takich właśnie mockach i autorzy twardo stoją przy stanowisku, że w takim sposobie wykorzystania mocków jaki oni preferują jest to lepsze podejście, dlatego że dla nich naturalnym podejściem do projektowania jest projektowanie “protokołocentryczne”).
Z tym Date Time w starym kodzie to zgoda, natomiast pole manewru zależy od narzędzi. Jeśli ma się dobre automatyczne narzędzie do refaktoryzacji, to najczęściej nie trzeba mockować tego co jest – w r# często sprawę załatwia kombinacja “Extract Method-> Extract Class->Introduce Parameter (jako parametr konstruktora)->Extract Interface->Use Base Type Where Possible”, którą można zrobić niemal mechanicznie.