Junit @BeforeClass
e @AfterClass
devono essere dichiarati statici. C'è una soluzione alternativa here per @BeforeClass
. Ho un numero di test unitari nella mia classe e desidero solo inizializzarlo e ripulirlo una volta. Qualsiasi aiuto su come ottenere una soluzione alternativa per @AfterClass
? Mi piacerebbe usare Junit senza introdurre ulteriori dipendenze. Grazie!Junit @AfterClass (non statico)
risposta
Se si desidera qualcosa di simile alla soluzione menzionata per @BeforeClass
, è possibile tenere traccia di quanti test sono stati eseguiti, quindi una volta eseguiti tutti i test, infine, eseguire il codice di pulizia finale.
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...
}
}
}
Questo presuppone che si sta utilizzando JUnit 4. Se è necessario tenere conto di metodi ereditati da una superclasse, vedi this come questa soluzione non venga metodi ereditati.
questo potrebbe funzionare in casi semplici ma non funzionerà se i test vengono ignorati, o in test ereditati – dkatzel
@dkatzel Buon punto. Puoi anche scorrere i metodi ereditati facendo qualcosa come [this] (https://stackoverflow.com/questions/28400408/what-is-the-new-way-of-getting-all-methods-of-a- class-compresi-ereditato-Sottotito). Probabilmente è meglio mantenere le risorse che dovrebbero essere ripulite solo una volta come statiche e occuparsene durante '@ AfterClass'. – kingkupps
- 1. JUnit 4 @BeforeClass e @AfterClass quando si utilizza Suites
- 2. JUnit @BeforeClass lavoro non statico attorno all'applicazione Spring Boot
- 3. Pulizia dopo tutti i test di junit
- 4. Come accedere a primavera ApplicationContext nel metodo statico junit @BeforeClass?
- 5. SuiteClasses JUnit con un elenco statico di classi
- 6. Classe di test JUnit generica
- 7. Classe teardown in junit 3?
- 8. Metodo statico e metodo non statico
- 9. Inizializzatore membro non statico da un altro non statico
- 10. non può creare un riferimento statico al campo non statico
- 11. non test JUnit usando Primavera
- 12. Suite di prove Junit 4 e classi di test individuali
- 13. Impossibile risolvere Junit: Junit: 12
- 14. Impossibile accedere al metodo non statico in contesto statico?
- 15. Metodi di supporto in C#: statico o non statico?
- 16. metodo statico o non statico per classe immutabile
- 17. JUnit 3 ha qualcosa di analogo a @BeforeClass?
- 18. Impossibile accedere campo non statico
- 19. Django: contenuto statico non trovato
- 20. Spring Parameterized/Theories JUnit Test
- 21. JUnit: NoClassDefFoundError: org/junit/corridore/manipolazione/filtro
- 22. JUnit @Test prevede l'annotazione non funziona
- 23. Java Thread.currentThread(). SetUncaughtExceptionHandler() non funziona con JUNIT?
- 24. Spring @Transactional non funziona nel test JUnit?
- 25. Perché JUnit non fornisce i metodi assertNotEquals?
- 26. Eliminare o commentare test JUnit non funzionanti?
- 27. Perché JUnit TemporaryFolder non è stato eliminato?
- 28. JUnit + Maven + Eclipse: Perché @BeforeClass non funziona?
- 29. Autowire non funziona in junit test
- 30. Perché JUnit 4 su Android non funziona?
Che cosa ti impedisce di utilizzare metodi statici per impostare e rimuovere? È vero, lo stato che hai impostato dovrebbe essere spostato su campi statici, ma sembra che tu voglia avere un ambito statico. –
Salva l'istanza di prova in un campo 'static'. Accedilo nel tuo metodo '@ AfterClass' e invoca qualsiasi metodo di pulizia che desideri. –
Ci sono altre classi che accedono allo stesso metodo di ripulitura che richiede ambiti diversi – jamesw1234