Moq – instalacja

Podczas pisania testów jednostkowych izolujemy się od komponentów z którymi testowany przez nas kod wchodzi w integrację. Poprzez zastąpienie komponentów atrapami jesteśmy w stanie odseparować się od logiki w nich zawartej. Daje nam to możliwość skupienia się na poprawności samej integracji. Sprawdzamy czy testowany przez nas kod wywołuje metodę komponentu z poprawnymi wartościami argumentów oraz…

Read More

PATTERN-ORIENTED SOFTWARE ARCHITECTURE: PATTERNS FOR CONCURRENT AND NETWORKED OBJECTS

Jest to druga z pięciu książek cyklu poświęconego wzorcom projektowym. Dowiedziałem się o nich słuchając devtalk trio (podcast prowadzony przez Macieja Aniserowicza, Andrzeja Krzywdę i Sławomira Sobótkę ). Zapraszam  do krótkiej recenzji: ZAWARTOŚĆ Książka podzielona jest na 8 rozdziałów: Concurrent and Networked Objects Service Access and Configuration Patterns Event Handling Patterns Synchronization Patterns Concurrency Patterns…

Read More

Reinstalacja wszystkich paczek NuGet w solucji/projekcie

Dziś bardzo szybki wpis, jednak wspomniane niżej polecenia bardzo się przydają. Czasem spotykam się z problemem, którego przyczyną jest nie rozpoznawanie paczek przez Visual Studio. Wyświetlana jest masa błędów, rekompilacja nie pomaga. Visual Studio twierdzi, że wszystkie pakiety ma poprawnie wgrane i aktualne. Jednak parząc w Solution Explorer, widać, że niektóre z nich nie istnieją. …

Read More

FluentAssertions

Fluent API jest popularne w środowisku .NET. Przez co można znaleźć frameworki wykorzystujące „płynny” interfejs, stosują go na przykład: Fluent Validation MVC, służący do sprawdzania poprawności przesyłanych formularzy danych. Fluent Migrator wspomagający pisanie migracji bazodanowych Fluent NHibernate. Framework wspiera NHibernate ORM, służy do prostszego mapowania struktur danych na tabele w relacyjnej bazie danych. Istnieje jego…

Read More

Testowanie wyjątków w xUnit

Polecam w swoim kodzie rzucać wyjątki z własną wiadomością. Pomaga to podczas diagnostyki problemu, który wystąpił w wdrożonym systemie. Dobrze jest wtedy przetestować, czy rzucamy poprawny wyjątek w problematycznej sytuacji. Framework xUnit posiada własną klasę do przechwytywania wyjątków o nazwie Record. Oferuje ona dwie metody Exception oraz oczywiście ExceptionAsync. Metody te zwracają obiekt typu Exception…

Read More

Testy jako narzędzia.

Testy można traktować jako narzędzia do wykonania pewnych operacji podczas developingu systemu. Przykładem mogą być testy, które mają za zadanie wykonanie dropa bazy, postawienie schematu na nowo, czy wypełnienie jej testowymi danymi. Z oczywistych powodów, takie testy nie powinny działać podczas uruchamiania wszystkich testów automatycznych. Powinny zostać pominięte. Zobaczmy jak to zrobić: Do solucji TestingPatterns…

Read More

Grupowanie testów

Wraz z rozwojem naszego projektu rośnie liczba testów. Możemy je pogrupować stosując atrybut [Trait]. Do solucji TestingPatterns dodamy nowy katalog o nazwie Trait:   Rys. 1. Struktura solucji Stworzymy w nim kilka prostych klas z zestawami testów:   Rys. 2. Zestawy testów W każdym zestawie dodajmy kilka testów. Zobaczmy przykładowy zestaw testów: Po uruchomieniu testów…

Read More

Wspólne dane dla kolekcji testów

Implementacja interfejsu IClassFixture sprawia, że mamy wspólny kontekst danych dla zestawu testów. Jest jednak sposób osiągnięcia tego efektu dla kilku zestawów testów. Aby to zrobić potrzebujemy klasy fixture z atrybutem [CollectionDefinition(”nazwa”)] implementującą interfejs ICollectionFixture. Skorzystamy z klasy Person stworzonej w poprzednim wpisie: Do solucji TestingPatterns dodałem nowy folder o nazwie CollectionFixture   Rys. 1. Struktura…

Read More

Test Suite – wspólne dane dla testów

Framework xUnit daje możliwość posiadania wspólnego kontekstu danych dla całego Test Suite. Zostaną one stworzone tylko raz. Zobaczmy jak to zrobić.   Rys. 1. Solucja TestingPatterns Do solucji TestingPatterns dodałem folder ClassFixture oraz plik Person.cs. Znajduje się w niej prosta klasa, którą wykorzystamy w testach: Dostarczeniem danych dla Test Suite zajmie się dodatkowa klasa o…

Read More

BeforeAfterTestAttribute (xUnit)

W xUnit istnieje atrybut BeforeAfterTest jego implementacja posiada dwie wirtualne metody Before oraz After. Jak ich nazwy wskazują są uruchamiane przed i po wykonaniu testu. Przy pomocy polimorfizmu, możemy dodać interesujący nas kod do tych metod.   Rys.1. Solucja TestingPatterns Do projektu xUnitFeatures dodałem nowy plik o nazwie BeforeAfterTestAttributeTests.cs Znajdzie się w nim nasz atrybut,…

Read More