Testy jednostkowe metody
W arkuszu INF.04 ze stycznia 2026 trzecią częścią były testy jednostkowe metody rzutu kością. Schemat Arrange-Act-Assert i przypadki, o których zdający zapominają najczęściej.
Testy jednostkowe weszły do arkuszy INF.04 na dobre i są częścią, którą najłatwiej zdobyć, a najczęściej się ją pomija z braku czasu. Sam schemat testu jest krótki i powtarzalny — warto go napisać nawet pobieżnie, bo punkty liczą się za każdy poprawny przypadek osobno.
1. Schemat Arrange – Act – Assert
Każdy test składa się z trzech kroków: przygotuj dane, wykonaj testowaną operację, sprawdź wynik.
[TestMethod]
public void Rzut_ZwracaWartoscWZakresie()
{
// Arrange
Kosc kosc = new Kosc(6);
// Act
int wynik = kosc.Rzut();
// Assert
Assert.IsTrue(wynik >= 1 && wynik <= 6);
}Nazwa metody testowej powinna mówić, co jest sprawdzane. Rzut_ZwracaWartoscWZakresie
niesie informację, Test1 nie niesie żadnej — a czytelność nazw bywa punktowana.
2. Przypadki, o których się zapomina
- Wartości brzegowe. Dla zakresu od 1 do 6 sprawdź, czy 1 i 6 są osiągalne, a 0 i 7 nigdy nie występują.
- Dane niepoprawne. Czy konstruktor odrzuca kość o dwóch ścianach? Test oczekujący wyjątku to pełnoprawny przypadek testowy.
- Powtarzalność. Wielokrotne wywołanie w pętli pokazuje, że metoda nie zwraca w kółko tej samej wartości.
- Wartość pusta. Dla metod przyjmujących tekst zawsze sprawdź
nulli pusty ciąg.
[TestMethod]
public void Konstruktor_OdrzucaZaMalaLiczbeScian()
{
Assert.ThrowsException<ArgumentException>(() => new Kosc(2));
}3. Czego egzaminator nie zaakceptuje
- Testu bez asercji. Metoda, która tylko wywołuje kod i nic nie sprawdza, nie jest testem.
- Wypisywania wyniku na konsolę zamiast
Assert. Test ma przechodzić lub nie przechodzić automatycznie. - Jednego testu na wszystko. Każdy przypadek osobno — inaczej po pierwszym niepowodzeniu reszta się nie wykona.
- Testów zależnych od kolejności. Każdy musi działać samodzielnie, na własnych danych.
Klasę, którą tu testujemy, budowaliśmy w pewniaku o klasie z konstruktorem.