====== Testy jednostkowe ====== ===== Ćwiczenia ===== - Połącz się z projektem zespołowym ''npr'' w kolekcji ''sandbox'' i pobierz projekt ''Slownik'' (także do pobrania {{zajecia:npr:src:slownik.zip|Tutaj}}). - Korzystając z frameworku Xunit.net stwórz testy jednostkowe do wszystkich 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 argument ''DodajSlowo'' rzuca wyjątek ''ArgumentNullException()'' * napisz test sprawdzający metodę ''ListaSłow'' za pomocą asercji porównujących kolekcje * ustaw w konstruktorze środowisko testowe: utwórz obiekt Słownik i dodaj kilka przykładowych słów * ustaw w środowisko testowe implementując interfejs IUseFixture * dla jednego z testów ustaw własność ''Skip'' atrybutu ''Fact'' aby test został zignorowany * dla jednego z testów ustaw własność ''Timeout'' atrybutu ''Fact'' 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ści ''IloscSlow'' - 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ą test przeczytany, np. z pliku. Obiekty niech będą dostarczane do słownika za pomocą metody ''Czytaj'', która parsuje zawartość otrzymanego łańcucha znakowego i umieszcza słowa w słowniku. * 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 - 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