Edytuj stronę Odnośniki Fold/unfold all ODT export Ta strona jest tylko do odczytu. Możesz wyświetlić źródła tej strony ale nie możesz ich zmienić. ====== 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<T> * 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 \\ <code>Ala ma kota Ala Ala ma kota "" (pusty łańcuch znakowy) ala Ala ALA ma kota kota ma ala ala </code> * 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 \\ <code csharp>string CzytajText()</code>. 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