It's time to take a look at the code smells we can encounter while writing unit tests. Let's start with interacting tests. Enjoy reading 😁
Sztuka programowania 1142 dni, 3 godziny, 23 minuty temu 80 źrodło rozwiń
Ćwiczenia czynią mistrza, ale jak zacząć? Wczuj się w sytuacje, mamy końcówkę Czerwca, masz wiele lat komercyjnego doświadczenia, szef mianował Cię na mentorkę/mentora grupy praktykantów/stażystów. Przychodzisz do Pracy w pierwszy dzień roboczy Lipca, na końcu korytarza widzisz nowe twarze, czeka już na Ciebie grupa ambitnych praktykantów/praktykantek kierunku Informatyka, lub pokrewnego. Po wstępnej rozmowie z grupą studentów/studentek 2-3 roku studiów dowiadujesz się od nich, że o testach jednostkowyc...
Sztuka programowania 2331 dni, 3 godziny, 11 minut temu 126 źrodło rozwiń
W aplikacji będącej aktualnie moim głównym zajęciem piszę oraz uczę się testów jednostkowych. Dlatego postanowiłem, że co nieco o nich napiszę jako wstępniak do być może późniejszych wpisów na ten temat.
Sztuka programowania 2511 dni, 3 godziny temu 189 źrodło rozwiń
Kiedy zaczynałem swoją przygodę z testami jednostkowymi nie widziałem żadnej różnicy między obiektami typu Dummy, Fake, Stub i Mock. Używałem każdego z nich bez świadomości istnienia jakichkolwiek różnic między nimi. Wszystkie cztery typy były dla mnie dokładnie tym samym – sztucznym obiektem stworzonym na potrzeby testów. Moja ignorancja i brak wiedzy prowadziły do kilku problemów:frustracji w trakcie pisania testów wynikającego z niewiedzy (np. dlaczego ten test wyrzuca w...
Daj się poznać 2017 2771 dni, 19 godzin, 42 minuty temu 134 źrodło rozwiń
Wprowadzenie do testów jednostkowych. Nie miałeś jeszcze styczności z testami jednostkowymi? Nie wiesz po co pisać testy jednostkowe? Nie wiesz czym tak naprawdę są testy jednostkowe? Nie wiesz do czego służą testy jednostkowe? Jeżeli na któreś z tych pytań odpowiedziałeś twierdząco, bądź zawahałeś się to zapraszam do lektury, która wprowadzi Cię do świata testów jednostkowych.
NUnit w wersji 3.6 wprowadził dość ciekawą funkcję – Assert.Multiple. Dzięki niej, dostajemy informacje na temat wszystkich testów, które nie przeszły. Przyjrzyjmy się temu bliżej… Do tej pory, używając kilku asercji naraz, jedna niespełniona asercja powodowała, że dalszy kod nie jest wykonywany.
Sztuka programowania 2854 dni, 12 godzin, 56 minut temu 163 źrodło rozwiń
Już od jakiegoś czasu miałem oko na spróbowanie F#. Połączenie szybkiego programowania funkcyjnego wraz z potężną biblioteką .NET brzmi bardzo fajnie i takie jest w rzeczywistości. Zobaczyłem, że NUnit ma w swoich przykładach projekt w F#, więc postanowiłem przepisać moje obecne testy na F#. Nie przewidziałem jednak trudności wynikających z nieznajomości tego języka…
Daj się poznać 2016 3100 dni, 3 godziny, 19 minut temu 57 źrodło rozwiń
Dotychczas nie pisałem testów (jakoś kod testowałem ręcznie) i odkrywam jak bardzo są pożyteczne. Po pierwsze i najważniejsze, umożliwiają wykrycie błędów w implementacji klas zanim zaczniemy ich używać. Tworząc nowy projekt testów w Visual Studio dostajemy MSTest, który nie działa pod Linuxem. W związku z tym sięgnąłem po NUnit.
Daj się poznać 2016 3103 dni, 2 godziny, 53 minuty temu 164 źrodło rozwiń
Generic classes tests mechanism using NUnit with test cases
Sztuka programowania 3107 dni, 34 minuty temu 79 źrodło rozwiń
Chciałem pokazać działanie kilku ciekawych atrybutów w NUnit. Długo się zastawiałem które są najciekawsze, w jakiej formie je sprzedać, jakich przykładów użyć i na co zwrócić uwagę. Doszedłem do jednego wniosku: za długo się zastanawiam. Poniżej pierwszy atrybut, który często mi się przydaje, a może nie każdy jest świadom jego istnienia.
Testy jednostkowe z natury muszą być wykonywane w izolacji. Wykonanie np. pierwszego testu nie powinno mieć żadnego znaczenia dla pozostałych. Analogicznie, kolejność ich wykonywania nie ma znaczenia. Zwykle jest to bardzo proste i osiąga się to poprzez np. mock’i. Czasami jednak może zajść potrzeba całkowitej izolacji poprzez wykonywanie każdego testu w osobnej AppDomain. Myślę, że w 99% przypadków jednak, można bez tego obyć się. Ostatnio jednak, pisząc pewne narzędzie do Visual Studio, musiałem odiz...
Sztuka programowania 3393 dni, 13 godzin, 22 minuty temu 155 źrodło rozwiń
Temat testów parametryzowanych pojawił się przy okazji pisania naszego „drugiego” testu jednostkowego. Wtedy to skorzystaliśmy z atrybutu [TestCase] pozwalającym na zdefiniowanie zestawów wartości, które są przekazywane do metody testowej. Stosując atrybuty do testów parametryzowanych (m. in. TestCase, Values, Range, Random) ograniczamy liczbę naszych metod testowych i redukujemy ilość redundantnego kodu.
Sztuka programowania 3688 dni, 20 godzin, 32 minuty temu 241 źrodło rozwiń
W tej części kursu zajmiemy się pojęciem inicjalizacji i czyszczenia danych. Wielkiej filozofii tutaj nie ma; w NUnit działa to tak:Jeśli chcemy, aby jedna z metod uruchamiała się przed każdym uruchomieniem naszego testu, aby np. inicjalizować dane, nakładamy na nią atrybut [SetUp].Jeśli zechcemy, aby metoda uruchamiała się po każdym uruchomieniu testu w celu np. czyszczenia danych — nakładamy atrybut [TearDown]...
Sztuka programowania 3887 dni, 20 godzin, 56 minut temu 143 źrodło rozwiń
Sometimes when you write tests you want to check how the code behaves in different cases. I had already experienced that a couple of times before and I always used TestCase annotation available in nUnit library. It’s nice to know that nUnit offers an alternative approach as well...
Visual Studio 2012 ma wsparcie dla nUnit. Wcześniej wspierał oficjalnie wyłącznie własne testy jednostkowe. Należy jednak najpierw zainstalować adapter. Wystarczy przejść do Tools –> Extensions and Updates –> Online –> Visual Studio Gallery –> Tools –> Testing i wybrać NUnit Test adapter: Po instalacji do dyspozycji mamy Test Explorer (VS): Najciekawszą chyba częścią jest możliwość sprawdzenia pokrycia kodu przez testy: Klikając na którąś z pozycji zostaniemy przekierowani bezpośrednio do kodu. ...
W tej części omówię jak wykonać kilka prostych technik, tj. jak:zgrupować testy za pomocą atrybutu [TestCase],testować wyjątki,testować zdarzenia. Na tapetę idzie przykład dzielenia; chcemy napisać funkcjonalność i testy mając na uwadze, że:metoda Divide należy do klasy Calculator,metoda Divide przyjmuje dwa parametry wejściowe — obydwa typu int; zwracanym ...
Sztuka programowania 4135 dni, 23 godziny, 49 minut temu 164 źrodło rozwiń
W tej części cyklu stworzymy nasz pierwszy test jednostkowy. Przedstawię krok po kroku jak napisać i przetestować prostą funkcjonalność wedle zasad TDD. Opiszę tutaj szczegółowo wszystkie kroki, począwszy od tego jak dodać referencję do NUnita, a skończywszy na tym jak uruchomić test.
Sztuka programowania 4151 dni, 5 godzin, 19 minut temu 241 źrodło rozwiń
„Ciemno wszędzie, głucho wszędzie, Co to będzie, co to będzie?” … ano będzie, będzie! a raczej jest! pierwszy odcinek drugiego sezonu codingtv();! Dzisiaj zaczynamy tworzyć instalator naszego bloga. Przygotowujemy metodę do uaktulniania ustawień bazy danych w web.confgu i standardowo omawiamy komentarze z poprzedniego odcinka. Pamiętamy również o naszym konkursie i zgodnie z obietnicą dzisiaj wylosowaliśmy zwycięzcę
Serwis User Witajcie! po dłuższej przerwie zapraszamy na dziesiąty odcinek codingtv(); Zgodnie z planem w tym odcinku przygotowujemy serwis do klasy User. Jak zawsze serwis pokrywamy testami oraz przygotowujemy kilka mocków.
Opis mockowania obiektów z wykorzystanie narzędzia Telerik JustMock. Wyjaśnienie dlaczego warto i gdzie używać mocków.