Lista artykułów

Weryfikacja parametrów metod w mock objects

Dość sporo teorii mamy za sobą, nadeszła więc pora na praktyczne przykłady. Tym razem spojrzymy na konfigurację zachowania stubów w zależności od parametrów przekazywanych do ich metod (oraz analizę wartości przekazanych do mocków przez testowane obiekty, co jest scenariuszem bardzo podobnym technicznie). Konkretne wartości W poniższym przypadku konfigurujemy zachowanie authenticationService tylko dla jednej pary parametrów [...]

Sposoby pisania testów z mockami: Expectations vs Record/Replay vs Arrange-Act-Assert

Zgłębiając arkana tworzenia testów jednostkowych z wykorzystaniem mock objects możemy natknąć się na trzy szkoły/sposoby pisania kodu. Zwykle możliwe jest zastosowanie więcej niż jednego podejścia za pomocą danej biblioteki. Wszystkie jednak charakteryzują się podobnymi "etapami": musimy stworzyć środowisko testowe, wykonać testowane operacje oraz sprawdzić ich poprawność. Różnice polegają na składni oferowanej przez framework oraz niejawnych [...]

Linkowanie repozytoriów: svn externals

Chyba każda firma ma zestaw własnych bibliotek czy konfiguracji pomagających tworzyć oprogramowanie w ten "jedyny właściwy", wymyślony przez kogoś ważnego sposób. Narzędzia te wykorzystywane są przez wszystkie tworzone projekty oraz nieustannie rozwijane wraz z ewolucją wymagań czy zmianami na jakimś ważnym stanowisku :). Ale jak dopilnować, żeby nie mnożyły się identyczne (a z czasem oczywiście [...]

Dynamic Mock vs Strict Mock vs Stub

Zapoznając się z tematyką testów jednostkowych napotykamy podział mocków na trzy grupy: Dynamic Mock, Strict Mock oraz Stub. Dziś pora na poruszenie tego tematu wraz z prezentacją jak je wykorzystać w Rhino Mocks. Stub Stub jest niczym innym jak głupią i najprostszą implementacją zadanego interfejsu. Nie możemy go w żaden sposób przetestować, nie możemy sprawdzić [...]

Wybór mock-object framework

Przed rozpoczęciem wykorzystywania mocków w swoim projekcie musimy zdecydować się z jakiego wspomagacza skorzystamy. Wiemy jedno: nie chcemy tworzyć mocków ręcznie (jak zostało to przedstawione tutaj). Zobaczmy więc co nam, programistom .NET, oferuje w tym zakresie wszechposiadający, uzależniający i niczym tlen niezastąpiony INTERNET. Nie jest moim zamierzeniem dokładna prezentacja i porównanie dostępnych rozwiązań – rzucę [...]

Generator wartości dla testów jednostkowych

Pisząc testy jednostkowe często musimy brać skądś testowe wartości, których wykorzystanie będziemy następnie weryfikować. Przy okazji ostatniego posta mieliśmy takie linijki: 1: string userName = "testUserName"; 2: string password = "testPassword"; Łatwo jednak sobie wyobrazić ile takich miejsc może pojawić się w skali całego projektu. Tysiące! I czy będzie się komuś chciało nadawać każdej zmiennej [...]

Mock Objects – pierwszy test krok po kroku

W poprzednim poście zapoznaliśmy się z pojęciem "mock". Dzisiaj krok po kroku napiszemy pierwszy test jednostkowy z wykorzystaniem ASP.NET MVC, nUnit oraz RhinoMocks. Do dzieła. 1) Tworzymy projekt ASP.NET MVC Z odpowiedniej strony ściągamy instalator i… instalujemy. W VS wchodzimy w okno tworzenia nowego projektu i w sekcji Web wybieramy aplikację ASP.NET MVC. Po podaniu [...]

Kolejny CodeCamp w Krakowie – i ty możesz pomóc

Społecznościowe cyborgi z Krakowa, czyli Krakowska Grupa Developerów .NET (KGD), wpadły na pomysł wstrzelenia się pomiędzy dwie duże konferencje programistyczne europejskiego formatu i skorzystania z kilkudniowej przerwy między nimi. Co mają robić podczas owej przerwy światowej sławy prelegenci występujący na obu tych wydarzeniach? Oczywiście: zawitać do Krakowa:). Żeby nie przedłużać, podlinkuję ogłoszenie i apel organizatorów [...]

Testy jednostkowe z wykorzystaniem mocków – wstęp

To co teraz czytacie jest początkiem serii postów o tworzeniu testów jednostkowych z użyciem mocków (btw: zna ktoś polskie tłumaczenie tego słowa?). Jak na początek przystało – dziś krótkie wprowadzenie. Testy jednostkowe badające poprawność zależności i integracji na poziomie pojedynczych klas wykorzystują specjalnie spreparowane, proste i na swój sposób "głupie" implementacje wymaganych przez dany komponent [...]

Goodbye Zine. Powrót na stare śmieci.

Po kilkumiesięcznych (sic!) rozważaniach postanowiłem, że uciekam z Zine’a. Od tej chwili wracam na stare śmieci. Reaktywuję możliwość dodawania komentarzy na swoim prywatnym blogu, nowe posty będą pojawiać się również tylko tam. Zainteresowanych zachęcam do regularnego odwiedzania. Godne uwagi adresy: the blog itself RSS dla postów RSS dla komentarzy Nadal będzie ciekawie (o ile było [...]

Alternatywa dla Convert.ChangeType()

Drugi raz w ciągu kilku dni przytrafiły mi się kłopoty podczas wykorzystania metody Convert.ChangeType(). Scenariusz jest bardzo prostu: mam wartość pobraną skądś-tam (baza danych, http request czy cokolwiek innego) reprezentującą znany mi typ, jednak przechowywaną w postaci stringa. Wszystko śmigało jak trzeba dopóki traktowałem w ten sposób zwykłe liczby i daty. Jakiś czas temu wpadł [...]

Pantoflowo-aspektowe sko_dev_jarzenie

Niedawno podczas koleżeńskiej konserwacji wypłynął nam temat pantoflarstwa, czyli bezwarunkowej podległości osobnika płci męskiej pod swego żeńskiego w życiu partnera. Swoją Panią. I nieuchronnie już wówczas do głowy napłynęła mi myśl, jak taką sytuację można doskonale zamodelować przy użyciu PostSharp – godnego uwagi darmowego narzędzia do programowania aspektowego w .NET. Przysiadłem na chwilę, ściągnąłem Post#, [...]

ASP.NET MVC – Reflector vs DropDownList

Kolejny odcinek o Reflectorze i MVC, tym razem opowieść spod znaku "przecież to NIE MOŻE nie działać!". Oczywiście bezlitosna rzeczywistość twierdziła inaczej i jak zwykle w takich wypadkach bywa – to ona była górą. Zobaczmy cóż takiego się stało… Jak zwykle dla uproszczenia stworzę bezsensowny projekcik specjalnie pod ten scenariusz, aby każdy mógł w prosty [...]

Visual Studio 2010: Zwijanie regionów

Regiony w Visual Studio to byt bardzo przydatny. Biorąc je za pewnik – bardzo łatwo lekceważyć ich wkład w organizację i przejrzystość kodu. Szczególnie mocno docenia się je, gdy przyjdzie korzystać z IDE które ich nie oferuje. Kilka lat temu musiałem napisać projekt w Javie i, nie interesując się zbytnio milionem dodatków do Eclipse, po [...]

Strongly-typed DisplayValue i DisplayMember / DataValueField i DataTextField

Ileż to razy zmuszeni jesteśmy pisać kod temu podobny: 1: list.ValueMember = "Id"; 2: list.DisplayMember = "Name"; Na CodeGuru niejednokrotnie pytano o jakiś sposób na rozwiązanie tego problemu. Podawanie stringów jest ZŁE, niewygodne i bardzo podatne na błędy wszelakie. Zmiana nazwy właściwości rozwala UI, refactoring bez dodatkowych narzędzi jak Resharper potrafi napsuć sporo krwi (a [...]