Pełna dokumentacja NUnit jest tutaj: https://docs.nunit.org/articles/nunit/intro.html
Wszystkie atrybuty: https://docs.nunit.org/articles/nunit/writing-tests/attributes.html
Ważne atrybuty:
[TestFixture]
[Test]
[Random]
[Range]
[Repeat]
[Retry]
[Setup]
oraz[TearDown]
[Values]
Klasyczne asercje: https://docs.nunit.org/articles/nunit/writing-tests/assertions/classic-assertions/Assert.True.html
- Obejrzyj klasę
CalculatorService.cs
- Napisz dla niej testy które pokryją 100% kodu
- Spróbuj użyć parametryzacji testów
- Pamiętaj o asercjach.
Dokumentacja klasy StringAssert: https://docs.nunit.org/articles/nunit/writing-tests/assertions/classic-assertions/String-Assert.html
- Obejrzyj klasę
HtmlTextFormatter.cs
- Napisz dla niej testy które pokryją 100% kodu
- Spróbuj użyć parametryzacji testów
- Użyj do porównania klasy StringAssert
- Odpal testy równolegle, żeby było lepiej widać różnicę dodaj w klasie testowej metodę która wymusi pauzę
[TearDown]
public void TearDown()
{
Thread.Sleep(1500);
}
- Obejrzyj klasę
NumberService.cs
- Napisz dla niej testy które sprawdzą dla jakich wartości dostajemy niespodziewany efekt.
- Użyj funkcji Range jeżeli nie chcesz wypisywać wszystkich wartości
- Obejrzyj klasę
WeirdService.cs
- Napisz test który przetestuje metodę
ThisMethodWillTimeout()
i ustaw mu Timeout na 2 sekundy - Popraw kod tak żeby test przeszedł.
- Uruchom test jeszcze raz.
- Napisz dla metody
ThisMethodWillThrowExceptionIfParameterIsZero(int parameter)
w klasieWeirdService.cs
test, który sprawdzi czy funkcja rzucą wyjątkiem
- Napisz test, który sprawdzi metodę
ThisMethodWillPassSometimes()
- Jako przechodzącą asercję ustaw rezultat mniejszy od 1000
- Uruchom go parę razy (sprawdź czy przechodzi).
- Ustaw automatyczne powtarzanie testu w przypadku failu na 5 razy.
Dokumentacja klasy: https://docs.nunit.org/articles/nunit/writing-tests/assertions/classic-assertions/Collection-Assert.html
- Napisz test dla klasy
CollectionService
; - Przetestuj utworzenie nowego obiektu konstruktorem bezparametrowym.
- Sprawdź czy property
Names
zawiera unikalne elementy. - Sprawdź czy property
Names
nie jest puste (i nie zawiera nulli)
- Utwórz nowy obiekt konstruktorem
CollectionService
i jako parametr przekaż listę ze swoim imieniem i nazwiskiem. - Sprawdź czy metoda
GetInitialsFromNames()
zwraca poprawne inicjały - Dodaj kolejny element do listy nazwisk (np. kolegi)
- Sprawdź rozmiar listy imion oraz listy inicjałów czy są takie same.
- Złap wszystkie asercje w
Assert.Multiple()