Jak zarządzać testami jednostkowymi w projekcie?

9

Mam w swoim projekcie kod, który osobiście nazywam tests, a nie testy jednostkowe. Mają być uruchamiane, a wynik musi być oceniony przez człowieka. Zrobiłem to, ponieważ tworzę silnik fizyki i podczas projektowania musiałem zobaczyć, co robię. Więc zrobiłem simulationpakiet w moim module testowym. Są to technicznie testy jednostkowe, ponieważ symulacje wykorzystują bibliotekę testów jednostkowych, ale nie mam zamiaru uruchamiać ich wszystkich tak, jak moich rzeczywistych testów jednostkowych.

Chciałbym odróżnić te testy specjalne od moich testów jednostkowych, ponieważ chcę łatwo uruchamiać wszystkie testy jednostkowe. Myślę, że to trochę jak testy funkcjonalne. Czy kiedykolwiek spotkałeś się z przypadkiem, w którym musiałeś przygotować aplikację do testów funkcjonalnych? Gdzie to przygotowanie testu funkcjonalnego (w zasadzie jakie są moje symulacje) należy umieścić w projekcie i jak odróżnić je od testów jednostkowych?

Jestem w Javie, więc mogłem zmienić sygnatury wszystkich metod z @Test public void myNamedTest()na, public static void main(String[] args)ale korzystanie z symulacji byłoby pracochłonne i mniej praktyczne.

Używam junitw gradleprojekcie. Wszelkie rozwiązania tworzące specjalny folder testowy gradlesą mile widziane.

Zimowy
źródło
2
Myślę, że mówisz o platformie testowej, w której możesz przeprowadzać testy ad hoc. Są one dostępne od tak dawna, jak pamiętam (ponad 30 lat) - być może nawet wcześniej. Zwykle siedzą w osobnym projekcie, który może uzyskać dostęp do biblioteki lub czegokolwiek, ale można ją uporządkować w dowolny sposób.
Robbie Dee,
3
Pojęcia jednostka / integracja / testy funkcjonalne opisują zakres testu: co jest testowane. Jest to całkowicie niezależne od sposobu przeprowadzania tych testów, np. Testy ręczne vs. testy automatyczne. Mogą istnieć zautomatyzowane testy akceptacyjne i ręczne testy jednostkowe oraz wszystko pomiędzy. Jeśli więc używasz JUnit do uruchamiania ręcznych testów funkcjonalnych, to w porządku - po prostu trzymaj je w jakiś sposób oddzielone od testów automatycznych, aby domyślnie nie były uruchamiane.
amon

Odpowiedzi:

10

Wygląda na to, że nowsze wersje kategorii testów Junit obsługują. Mogą one być przydatne do sklasyfikowania każdego testu. Następnie, gdy działa automatyzacja kompilacji, może uwzględnić lub wykluczyć te testy na podstawie kategorii.

To, czy chcesz połączyć te testy z testami jednostkowymi, zależy od preferencji organizacji. Można chcieć stworzyć osobny projekt „platformy testowej”, aby oddzielić regularne testy jednostkowe od bardziej specjalistycznych.

https://dzone.com/articles/closer-look-junit-categories

Jon Raynor
źródło