Cześć.
Piszę pewien prosty walidator który otrzymuje bean'a z konfiguracją. Potrzebuję sprawdzić kilka pól na różne sposoby, wartości skrajne tj. minimalne, maksymalne, poprawne, błędne itp.
I naszło mnie takie pytanie.
Kiedyś przyjąłem sobie taki schemat aby w teście jednostkowym najpierw deklarować pola, potem przygotować dane a na końcu wykonać test (chyba nawet z jakiejś książki to wziąłem). Moim zdaniem jest to bardzo czytelne.
I np. mam taki test:
@Test
public void isCorrectSizeX(){
when(configBean.getSizeX()).thenReturn(100);
assertThat(configBeanValidator.isCorrectSizeX(),is(true));
}
Chciałbym sprawdzić dla innych wartości także aby upewnić się że dla pewnych wartości zwróci true a dla innych false.
Pytanie więc, czy lepiej pisać dla każdego testu osobną metodę testującą czy zrobić coś w stylu:
@Test
public void isCorrectSizeX(){
when(configBean.getSizeX()).thenReturn(100);
assertThat(configBeanValidator.isCorrectSizeX(),is(true));
when(configBean.getSizeX()).thenReturn(1);
assertThat(configBeanValidator.isCorrectSizeX(),is(false));
}
przez co mój schemat o którym na początku pisałem jest niejako zaburzony.
Oczywiście powyższy przykład to prosty walidator który ma być głównie przykładem.
Jak w przypadku kiedy mamy do sprawdzenia wiele punktów/przypadków jest lepiej pisać testy: każdy osobno robiąc listę testów czy kilka przypadków jeśli tyczy się tego samego testować w jednej metodzie? Może testy parametryczne? A może jest jeszcze coś innego?
Pozdrawiam,
eL