“Płynne asercje”, czyli jak ułatwić sobie życie korzystając z Fluent Assertions?

Wzorzec projektowy “fluent interface” (polski odpowiednik… płynny interfejs…?) przyjął się w środowisku .NETowym 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. Pytanie który z poniższych zapisów jest bardziej naturalny?

Zwykły proszek, ekhm asercja:

Assert.AreEqual("Jan", firstName);

czy odpowiednik “fluent”:

firstName.ShouldBe("Jan");

Wybór pozostawiam Tobie, czytelnikowi, gdyż każdy ma swój gust. Niemniej jednak warto zaznajomić wiedzę na temat płynnych asercji.

Continue reading

Automatyczne generowanie testów jednostkowych: IntelliTest

IntelliTest to wewnętrzna funkcjonalność Visual Studio (Enterprise 2015), 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). Co więcej, tabela przypadków testowych zawiera scenariusze, które nie zostały obsłużone w naszej logice biznesowej, a które zwracają wyjątek (np. NullReferenceException lub dzielenie przez zero).

IntelliTest współpracuje natywnie z MSTest oraz poprzez rozszerzenia z xUnit.net i NUnit.

7167.2015_2D00_09_2D00_30_2D00_IntelliTest1_5F00_5C49D3D5

Continue reading