W testach bardzo często mamy do czynienia z powtarzaniem tego samego kodu. Tak samo ma się sprawa z testowaniem null-checków (zw. inaczej jako guard clauses) w konstruktorach. Jeśli chcemy napisać test dla takiego przypadku, to zazwyczaj jest on napisany jako osobna metoda. Jak możemy sobie uprościć życie? Z pomocą przychodzi biblioteka AutoFixture.Idioms.
Czytaj dalej...W jaki sposób mockować metody ze słowem kluczowym out?
Czytaj dalej...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.
Czytaj dalej...Pora przyjrzeć się trzeciemu najpopularniejszemu darmowemu frameworkowi do tworzenia atrap w .NET – NSubstitute.
Czytaj dalej...Dziś w kursie TDD przyjrzymy się frameworkowi do tworzenia atrap, konkurencyjnemu do wcześniej poznanego Moq. FakeItEasy, bo o nim mowa, jest darmowy, łatwy w nauce, ma wsparcie dla C# i VB.NET, różni się od innych bibliotek nie tylko semantyką, ale także nieco innym podejściem do tematu tworzenia atrap.
Czytaj dalej...W tym artykule przyjrzymy się ciut bardziej zaawansowanym technikom tworzenia atrap przy pomocy Moq: argument matching, verify, callback.
Czytaj dalej...Moq to najpopularniejszy framework do tworzenia atrap w .NET. W tej części kursu poznamy jego składnię i podstawowe możliwości.
Czytaj dalej...W części czternastej kursu Test-Driven Development omówimy technikę testowania zależności za pomocą atrap (ang. mock).
Czytaj dalej...Wzorzec projektowy fluent interface (polski odpowiednik... płynny interfejs?) przyjął się w środowisku .NET-owym bardzo dobrze. I słusznie! "Płynna syntaktyka" znacznie poprawia czytelność pisanego kodu. Jednym z sztandarowych przykładów jej użycia są asercje w testach, np. przy wsparciu biblioteki Fluent Assertions
Czytaj dalej...IntelliTest to wewnętrzna funkcjonalność Visual Studio, która służy do generowania tabeli danych wejściowych oraz zestawu testów jednostkowych. Dla danej metody generowane są dane wejściowe, w oparciu których mogą zostać wygenerowane testy jednostkowe. Przypadki testowe tworzone są w oparciu o analizę każdego skoku warunkowego (conditional branch).
Czytaj dalej...Postanowiłem kiedyś stworzyć, na własne potrzeby, spis narzędzi dla TDD dla .NET. Z czasem, lista rozrosła się do narzędzi nie tylko związanych z TDD, ale także z testami akceptacyjnymi i BDD. Dokończyłem ten spis o pozostałe rodzaje testów i opublikowałem na GitHubie, tak żeby można było łatwiej aktualizować.
Czytaj dalej...C# 5.0 wniósł wiele dobroci, m.in. obsługę wywołań asynchronicznych za pomocą słów kluczowych async i await. Rozwiązanie, ze względu na prostotę obsługi i skuteczność, cieszy się do dziś sporą popularnością. Jak testować wywołania asynchroniczne? Tego dowiemy się w tym odcinku!
Czytaj dalej...Rzecz być może dla niektórych mało istotna, dla niektórych w ogóle nie istotna, ale niezależnie od istotności sprawy – myślę, że warta wpisu na blogu. NUnit posiada dwa modele asercji: Classic Assert Model oraz Constraint-Based Assert Model.
Czytaj dalej...W niniejszym artykule przyjrzymy się w jaki sposób możemy przetestować klasy generyczne za pomocą funkcjonalności NUnita pod nazwą Generic Test Fixture.
Czytaj dalej...Teoria jest specjalnym rodzajem testu, w którym weryfikujemy dane twierdzenie przy pomocy założeń (assumptions).
Czytaj dalej...Naturalnym krokiem po omówieniu testów parametryzowanych jest przejście do testów kombinatorycznych i sekwencyjnych. Do dyspozycji mamy dwa atrybuty NUnita — [Combinatorial] oraz [Sequential].
Czytaj dalej...W C# istnieje mało znana składnia do inicjalizacji zagnieżdzonych obiektów (nested object initializer syntax).
Czytaj dalej...Celem testów parametryzowanych jest przekazanie zestawu wartości danych do metody testowej. Każdy zestaw danych jest traktowany jako osobny test.
Czytaj dalej...W tej części kursu zajmiemy się pojęciem inicjalizacji i czyszczenia danych.
Czytaj dalej...W tej części omówię jak wykonać kilka prostych technik, tj. jak zgrupować testy za pomocą atrybutu [TestCase], testować wyjątki, testować zdarzenia.
Czytaj dalej...W tej części cyklu stworzymy nasz pierwszy test jednostkowy. Przedstawię krok po kroku jak napisać i przetestować prostą funkcjonalność wedle zasad TDD.
Czytaj dalej...