Testy jednostkowe często uważane są za lepszą wersję dokumentacji projektu. Dzięki nim potrafimy sprawdzić logikę działania poszczególnych elementów aplikacji. Warto więc zadbać o to, żeby stały się jak najbardziej czytelne.
Jednym z narzędzi poprawiających czytelność testów jednostkowych jest Fluent Assertions. Pozwala ono na zastąpienie klasycznych asercji takimi, które pozwolą nam odczytać, co sprawdzamy.
Instalacja
W celu instalacji biblioteki możemy posłużyć się NuGetem. W VisualStudio klikamy na górnym pasku w Tools i wybieramy Package Manager Console (w zależności od wersji Visual Studio konsola znajduje się bezpośrednio w Tools lub po rozwinięciu NuGet Package Manager). Gdy pojawi nam się konsola należy wskazać projekt, do którego doinstaluje się rozszerzenie na liście rozwijanej Default project. Ostatnim krokiem jest wpisanie w konsoli :
Install-Package FluentAssertions
Fluent Assertions zostanie pobrane i automatycznie dodane do referencji w projekcie.
Użycie
Biblioteka udostępnia zestaw metod w zależności od tego, na jakim typie obiektu ją wywołamy. Weźmy na warsztat prostą aplikację banku, która ma obiekty konto i przelew.
bool result = Przelew.WykonajPrzelew(kontoNadawcy, kontoOdbiorcy, 100, "przelew testowy");
Za pomocą klasycznej asercji wyglądałoby to tak:
Assert.IsTrue(result);
Dzięki Fluent Assertions możemy zrobić to prawie jak w języku naturalnym:
result.Should().BeTrue();
Sprawdźmy zatem, czy poprawnie wykonała się operacja i przelew znajduje się w historii transakcji:
int result = kontoNadawcy.Przelewy.Count(p => p.Opis == "przelew testowy"); Assert.AreNotEqual(0, result);
Wykorzystamy teraz opisywaną bibliotekę, żeby sama asercja mówiła nam jak najwięcej o tym, co chcemy sprawdzić:
kontoNadawcy.Przelewy.Should().Contain(p => p.Opis == "przelew testowy");
Możemy również sprawdzić kilka warunków:
kontoNadawcy.Przelewy.Should().NotBeNullOrEmpty().And.Contain(p => p.Opis == "przelew testowy");
Wiele praktycznych przykładów dostępnych jest w dokumentacji Fluent Assertions. Można tam znaleźć jak radzi sobie z różnymi typami obiektów i sporo ciekawych możliwości jej wykorzystania.
Fluent Assertions jest bardzo intuicyjnym i przydatnym narzędziem przy tworzeniu testów jednostkowych. Dzięki tej bibliotece nasze testy stają się na tyle czytelne, że wracając do nich po dłuższym czasie, nie trzeba specjalnie zagłębiać w kod. Jest to również na tyle zbliżone do języka naturalnego, że osoby nie mające pojęcia o programowaniu, dowiedzą się jak działają mechanizmy aplikacji.
Najnowsze komentarze