Badając najlepsze praktyki testowania jednostek, aby pomóc w opracowaniu wytycznych dla mojej organizacji, natknąłem się na pytanie, czy lepiej lub przydatniej jest oddzielić urządzenia testowe (klasy testowe) czy zachować wszystkie testy dla jednej klasy w jednym pliku.
Fwiw, mam na myśli „testy jednostkowe” w czystym sensie, że są to testy białych skrzynek ukierunkowane na jedną klasę, jedno stwierdzenie na test, wyśmiewane wszystkie zależności itp.
Przykładowym scenariuszem jest klasa (nazwij to Dokument), która ma dwie metody: CheckIn i CheckOut. Każda metoda implementuje różne reguły itp., Które kontrolują ich zachowanie. Zgodnie z regułą jednego potwierdzenia na test, będę miał wiele testów dla każdej metody. Mogę umieścić wszystkie testy w jednej DocumentTests
klasie o nazwach takich jak CheckInShouldThrowExceptionWhenUserIsUnauthorized
i CheckOutShouldThrowExceptionWhenUserIsUnauthorized
.
Mogę też mieć dwie osobne klasy testowe: CheckInShould
i CheckOutShould
. W takim przypadku moje nazwy testów zostałyby skrócone, ale byłyby zorganizowane, aby wszystkie testy dla określonego zachowania (metody) były razem.
Jestem pewien, że są plusy i minusy, aby podejść i zastanawiam się, czy ktoś poszedł tą drogą z wieloma plikami, a jeśli tak, to dlaczego? Lub, jeśli wybrałeś podejście z jednym plikiem, dlaczego uważasz, że jest to lepsze?
testResponseContainsSuccessTrue()
, testResponseContainsMyData()
a testResponseStatusCodeIsOk()
. Można by mieć je w jednym testResponse()
, który trzy dochodzi: assertEquals(200, response.status)
, assertEquals({"data": "mydata"}, response.data)
iassertEquals(true, response.success)