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 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 odpowiednio 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 - 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'' atrybutu ''Fact'' aby test został zignorowany - 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 ''MemberData'' * 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ą 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 metody ''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 * Użyj biblioteki Moq do zweryfikowania, że metoda ''Czytaj'' wywoła metodę ''CzytajTekst'' interfejsu ''IFileReader'' tylko 1 raz - Zainstaluj rozszerzenie Xunit.net do R# i utwórz sesję zawierającą wszystkie testy z projektu i uruchom wszystkie testy - Wykonaj analizę pokrycia kodu testami jednostkowymi i sprawdz, które fragment kodu wymagają jeszcze przetestowania. Napisz brakujące testu, tak aby poziom pokrycia całego kodu był nie mniejszy niż 80% - Spróbuj powtórzyć podobny scenariusz testowania korzystając z NUnit lub/i MS Test - Skonfiguruj definicję buildu w TFS zawierający automatyczne przeprowadzenie testów jednostkowych po stronie serwera po każdej zatwierdzonej zmianie. - Korzystając z dowolnego frameworku do testów jednostkowych przygotuj testy jednostkowe dla metod z modelu i modelu widoku dla wybranej aplikacji z zajęć dotyczących WPF lub Aplikacje Uniwersalne