Testy jednostkowe
Ćwiczenia
- Połącz się z projektem zespołowym
npr
w kolekcjisandbox
i pobierz projektSlownik
(także do pobrania Tutaj). - Korzystając z frameworku Xunit.net stwórz testy jednostkowe do metod w klasie
Slownik
- utwórz projekt zawierający testy i dodaj referencję do biblioteki xunit.net
- za pomocą nuget zainstaluj oprogramowanie do uruchamianie testów xunit.net w Visual Studio
- napisz test sprawdzający czy dodanie kilku przykładowych słów do słownika odpwiedno ustawi liczniki słów (
IloscSlow
,IloscWszystkichSlow
) - napisz test sprawdzający czy dodanie pustego napisu do słownika nie zwiększy liczby słów
- napisz test sprawdzający czy brak wyrazu (
null
) podany jako argumentDodajSlowo
rzuca wyjątekArgumentNullException()
- napisz test sprawdzający metodę
ListaSłow
za pomocą asercji porównujących kolekcje
- Przygotuj środowisko testowe:
- w konstruktorze klasy testowej utwórz obiekt Słownik, który będzie dostępny dla każdej metody testowej i dodaj do słownika kilka przykładowych słów
- ustaw w środowisko testowe implementując interfejs IUseFixture<T>
- Dla jednego z testów ustaw własność
Skip
atrybutuFact
aby test został zignorowany - Dla jednego z testów ustaw własność
Timeout
atrybutuFact
zabezpieczający przez zbyt długim wykonywaniem - Utwórz testy Data-Driven-Test (atrybut
Theory
) to przetestowania tych samych metod- Wykorzystaj atrybut
InlineData
do przetwstowania poprawności zawartości słownika dla danych
Ala ma kota Ala Ala ma kota "" (pusty łańcuch znakowy) ala Ala ALA ma kota kota ma ala ala
- Spróbuj uzyskać to samo za pomocą atrybutu
PropertyData
- Dodaj referencję do
AutoFixture
i wygeneruj słownik zawierający 3 elementy o losowych wartościach, przetestuj poprawność wyniku otrzymanego z własnościIloscSlow
- Przekształć metodę
Czytaj
w taki sposób aby wyizolować ze środowiska testowego odczyt zewnętrznego pliku tekstowego.- Zaimplementuj interfejs
IFileReader
, która wymusza implementację metody
string CzytajText()
Obiekty implementujące ten interfejs zwracają tekst, który po wyodrębnieniu słów jest dodawany do słownika. Obiekty implementujące ten interfejs są dostarczane do klasy słownika poprzez argument metoty
Czytaj
. - Użyj biblioteki
Moq
do przygotowania atrapy, która dostarczy do słownika pewien tekst (np. „Ala_ma_kota!”) i przetestuje poprawność oczekiwanych wyników - Uzyj biblioteki Moq do zweryfikowania, że metoda
Czytaj
wywoła metodęCzytajTekst
interfejsuIFileReader
tylko 1 raz
- Zainstaluj rozszerzenie Xunit.net do R# i utwórz sesję zawierającą wszystkie testy z projektu i uruchom wszystkie testy
- Spróbuj powtórzyć podobny scenariusz testowania korzystając z NUnit lub/i MS Test