Czytelne testy z FluentAssertions

FluentAssertions

FluentAssertions jest biblioteką, dzięki której assercje w testach są dużo bardziej czytelne. Osobiście używam jej, jeśli tylko mogę. Assercje z jej wykorzystaniem są łatwe do zrozumienia, a i komunikaty błędów są moim zdaniem czytelniejsze, niż w przypadku standardowych assercji.

Instalacja w projekcie

Bibliotekę FluentAssertions można zainstalować z Nuget-a, wybierając  manage nuget package z menu kontekstowego na referencjach projektu testowego

lub poprzez Package Manager Console (zwrócić należy uwagę, żeby wygrać odpowiedni projekt w konsoli) z wykorzystaniem polecenia:

Pierwsze Kroki

FluentAssertions jako główny komponent wykorzystuje extension method, który to pobiera nasz obiekt, na którym chcemy wykonać porównanie i tworzy nam obiekt assercji. Takie połączenie jest dla mnie wygodniejsze, niż wykorzystywanie statycznych metod z klasy Assert.

Zapis assercji zawsze wygląda podobnie

Assercje na obiektach

Z operacji na obiektach poza prostymi porównaniami  typów prostych, każdy typ prosty ma specyficzne dla siebie porównania. Na przykład dla wartości całkowitych  możemy sprawdzić z automatu czy liczba ma określoną wartość, czy może jest w jakimś zakresie

lub dla wartości zmiennoprzecinkowych możemy określić wartość w przybliżeniu

Niby proste zabiegi, ale zwiększają one czytelność porównań, przez co redukują możliwość powstania błędu.

Dla typów złożonych też istnieje możliwość porównania właściwości klas, wszystkich właściwości, co przy zmianach niweluje możliwość pominięcia, którejś z właściwości. W kodzie porównywania złożonych obiektów, które nie mają przeciążonego operatora równości ciągle za dużo widzę porównywania każdej właściwości w osobnym assercie. Dzięki FluentAssertions takie porównanie może wyglądać tak

Assercje na listach

Wśród operacji na listach możemy wybrać kilka dosyć ciekawych.

Assercje a wyjątki

Testowanie wyjątków wygląda nieco inaczej niż w standardowym assercie, gdzie wykorzystujemy atrybuty. Tutaj wykorzystujemy akcję jako element, na którym operujemy. Sprawdzenie czy wyjątek zostanie wywołany może wyglądać tak :

Biblioteka FluentAssertions jest bardzo dobrze udokumentowana. Ja polecam ze swojej strony odrobinę się nią pobawić. Metody są naprawdę bardzo intuicyjne i tak naprawdę wystarczy wykorzystać możliwości jakie daje nam intelisence.  Gdyby ktoś jednak chciał poczytać więcej proponuję rozpocząć lekturę od strony projektu http://fluentassertions.com/

Proste zabawy dostępne są na moim GitHubie w katalogu https://github.com/Matejkos/BlogProjects/tree/master/FluentAssertionsPlayGround

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *