Junit's @BeforeClass
i @AfterClass
muszą być zadeklarowane jako statyczne. Istnieje ładne obejście here dla @BeforeClass
. Mam wiele testów jednostkowych w mojej klasie i chcę tylko raz zainicjować i wyczyścić. Każda pomoc, jak uzyskać obejście dla @AfterClass
? Chciałbym używać Junit bez wprowadzania dodatkowych zależności. Dzięki!Junit @AfterClass (nie statyczny)
Odpowiedz
Jeśli chcesz czegoś podobnego do obejścia opisanego dla @BeforeClass
, możesz śledzić, ile testów zostało przeprowadzonych, a następnie, po wykonaniu wszystkich testów, w końcu wykonaj końcowy kod oczyszczania.
public class MyTestClass {
// ...
private static int totalTests;
private int testsRan;
// ...
@BeforeClass
public static void beforeClass() {
totalTests = 0;
Method[] methods = MyTestClass.class.getMethods();
for (Method method : methods) {
if (method.getAnnotation(Test.class) != null) {
totalTests++;
}
}
}
// test cases...
@After
public void after() {
testsRan++;
if (testsRan == totalTests) {
// One time clean up code here...
}
}
}
Zakłada używasz JUnit 4. Jeśli trzeba uwzględnić metod odziedziczonych z nadklasy, zobacz this jak to rozwiązanie nie zostanie odziedziczone metody.
to może działać w prostych przypadkach, ale nie zadziała, jeśli testy zostaną zignorowane, lub w testach dziedziczonych – dkatzel
@dkatzel Dobra uwaga. Można również iterować poprzez odziedziczone metody, wykonując coś w stylu [to] (https://stackoverflow.com/questions/28400408/what-is-the-new-way-of-getting-all-metods-of-a- class-included-inherited-defau). Najlepiej jest zachować zasoby, które powinny być czyszczone tylko raz jako statyczne i dbać o to podczas '@ AfterClass'. – kingkupps
- 1. Jak działa assumeTrue() w JUnit
- 2. Ustawienia TestSuite w jUnit 4
- 3. Ogólna klasa testu JUnit
- 4. Usuwanie klasy w junit 3?
- 5. destructor statyczny
- 6. nie używając testu JUnit Wiosna
- 7. JUnit dziedziczenie testowe nie działa
- 8. Statyczny constexpr odr-używane czy nie?
- 9. Statyczny ciąg literału?
- 10. Regex.Replace i statyczny kontekst?
- 11. PHP nowy statyczny (zmienna $)
- 12. Co to jest "statyczny"?
- 13. Licznik statyczny w C++
- 14. Statyczny zestaw danych szyn
- 15. Go: "Statyczny" projekt metody
- 16. Różnice między JUnit 3 i JUnit 4
- 17. Plik statyczny routingu MVC
- 18. Statyczny generator strony internetowej
- 19. Dlaczego JUnit nie dostarcza metod assertNotEquals?
- 20. JUnit nie wyświetla się w JMeter JMeter
- 21. Dlaczego nie jest usuwany tymczasowy folder JUnit?
- 22. Android usługa uruchomiona przez nie testów JUnit
- 23. Dlaczego JUnit 4 na Androidzie nie działa?
- 24. Java Thread.currentThread(). SetUncaughtExceptionHandler() nie działa z JUNIT?
- 25. Junit ant task - JUnitTask nie został znaleziony
- 26. Spring @ Transactional nie działa w teście JUnit?
- 27. Nie można uruchomić jUnit z Eclipse
- 28. Groovy Eclipse nie można uruchomić testy JUnit
- 29. Scala: jak odziedziczyć "slot statyczny"?
- 30. Ustal, czy typ jest statyczny.
Co powstrzymuje Cię od używania metod statycznych do skonfigurowania i zerwania? To prawda, że ustawiony stan musiał zostać przeniesiony do pól statycznych, ale brzmi to tak, jakby chciał on mieć zasięg statyczny. –
Zapisz instancję testową w polu "static". Wejdź do niego w swojej metodzie '@ AfterClass' i poproś o wywołanie dowolnej metody czyszczenia. –
Istnieją inne klasy, które uzyskują dostęp do tej samej metody czyszczenia, która wymaga różnych zakresów. – jamesw1234