Chcę pisać przypadki testowe dla dużej części kodu, chciałbym poznać szczegóły dotyczące @Rule
funkcji adnotacji JUnit , aby móc używać jej do pisania przypadków testowych. Podaj kilka dobrych odpowiedzi lub linków, które podają szczegółowy opis jego funkcjonalności za pomocą prostego przykładu.
java
junit
junit4
junit-rule
Dipak
źródło
źródło
@Rule
dość dobrze wyjaśnia , szczególnie sprawdź ostatni rozdział „Sekwencja wydarzeń w szczegółach”Odpowiedzi:
Reguły służą do dodawania dodatkowej funkcjonalności, która ma zastosowanie do wszystkich testów w klasie testów, ale w bardziej ogólny sposób.
Na przykład, ExternalResource wykonuje kod przed i po metodzie testowej, bez konieczności używania
@Before
i@After
. UżycieExternalResource
raczej niż@Before
i@After
daje możliwości lepszego ponownego wykorzystania kodu; tę samą regułę można zastosować z dwóch różnych klas testów.Projekt został oparty na: Przechwytywacze w JUnit
Aby uzyskać więcej informacji, zobacz Wiki JUnit: zasady .
źródło
Reguły Junita działają na zasadzie AOP (programowanie aspektowe). Przechwytuje metodę testową, zapewniając w ten sposób możliwość wykonania pewnych czynności przed lub po wykonaniu określonej metody testowej.
Weź przykład poniższego kodu:
Za każdym razem, gdy wykonywana jest powyższa metoda testowa, tworzony jest folder tymczasowy, który jest usuwany po wykonaniu metody. To jest przykład reguły „out-of-box” dostarczonej przez Junit.
Podobne zachowanie można również osiągnąć, tworząc własne reguły. Junit udostępnia interfejs TestRule, który można zaimplementować w celu stworzenia własnej reguły Junit.
Oto przydatny link w celach informacyjnych:
źródło
Wyjaśnienie, jak to działa:
JUnit opakowuje metodę testową w obiekt Statement, więc instrukcja i
Execute()
uruchamia test. Następnie zamiast wywoływaćstatement.Execute()
bezpośrednio w celu uruchomienia testu, JUnit przekazuje instrukcję do reguły testowej z@Rule
adnotacją. Funkcja „zastosuj” TestRule zwraca nowe Oświadczenie, biorąc pod uwagę Oświadczenie wraz z testem. NowaExecute()
metoda instrukcji może wywoływać testową metodę wykonywania instrukcji (lub nie, lub wywoływać ją wiele razy) i robić, co chcebefore and after
.Teraz JUnit ma nową instrukcję, która nie tylko uruchamia test, i może ponownie przekazać ją do innych reguł przed ostatecznym wywołaniem polecenia Wykonaj.
źródło
Reguły są używane do ogólnego poprawienia działania każdej metody testowej. Reguła Junita przechwytuje metodę testową i pozwala nam coś zrobić, zanim metoda testowa rozpocznie wykonywanie i po wykonaniu metody testowej.
Na przykład za pomocą reguły @Timeout możemy ustawić limit czasu dla wszystkich testów.
@ Reguła współczesnego folderu służy do tworzenia folderów tymczasowych, plików. Za każdym razem, gdy wykonywana jest metoda testowa, tworzony jest folder tymczasowy, który jest usuwany po wykonaniu metody.
Możesz zobaczyć przykłady niektórych wbudowanych reguł dostarczonych przez junit pod tym linkiem .
źródło