Possiedo una suite di test JUnit 4 con i metodi BeforeClass e AfterClass che eseguono un'installazione/rimozione per le seguenti classi di test. Quello di cui ho bisogno è di eseguire le classi di test anche da loro stessi, ma per quello ho bisogno di uno scenario di setup/teardown (BeforeClass e AfterClass o qualcosa del genere) per ogni classe di test. Il fatto è che quando eseguo la suite non voglio eseguire il setup/teardown prima e dopo ogni classe di test, voglio solo eseguire il setup/teardown dalla suite di test (una volta). È possibile? Grazie in anticipo.Suite di prove Junit 4 e classi di test individuali
risposta
Non conosco alcun modo standard per farlo con JUnit. Il motivo, come probabilmente già sai, è che i tuoi casi di test dovrebbero funzionare indipendentemente l'uno dall'altro. Ciò riguarda i metodi "normali" di setup/teardown eseguiti prima e dopo ciascun metodo di test. L'impostazione della classe e il teardown sono un po 'diversi, anche se preferirei comunque eseguire i miei test in modo indipendente e stare fuori dalla zona problematica.
Tuttavia, se si è veramente convinti di ciò che si sta facendo, è possibile utilizzare un flag globale per segnalare se l'installazione di classe/di teardown deve essere eseguita e per verificarne lo stato nei metodi di installazione di classe/smontaggio . Nella tua suite di test, potresti includere una classe speciale come la prima, che non fa altro che eseguire la configurazione e impostare il flag globale per indicare ai veri casi di test che i loro metodi di setup/teardown della classe non devono essere eseguiti. Allo stesso modo, un'ultima classe speciale nella suite può eseguire il codice di rimozione. L'avvertenza è che temo che JUnit non garantisca l'ordine di esecuzione delle classi di test all'interno di una suite, sebbene molto probabilmente le esegua nell'ordine specificato - ma questo è solo un dettaglio di implementazione. Provalo, potrebbe funzionare per te, ma non c'è alcuna garanzia che farà sempre quello che ti aspetti.
Se si dispone di jUnit 4.7+, si consiglia di esaminare la nuova funzione denominata Regole (che viene spiegata in this blog post). Potrebbero non essere esattamente ciò che vuoi, ma probabilmente sono i migliori che ottieni con jUnit.
Presumibilmente TestNG offre migliori possibilità di raggruppamento dei test, ma non l'ho ancora esaminato personalmente.
No, non esiste un modo standard per farlo in JUnit, anche se potresti suggerire qualcosa come suggerito da Péter Török.
Si noti comunque che JUnit è più o meno abusante nel fare ciò. L'intero punto dell'unità verifica che siano indipendenti l'uno dall'altra. Questo perché le dipendenze tra i test creano un incubo di manutenzione totale (i test falliscono perché l'esecuzione è nell'ordine sbagliato).
Quindi vi consiglio di prendere in considerazione con forza se non è meglio solo sempre eseguire l'installazione ...
Grazie, id lo ha preso in considerazione, ma l'installazione ha una durata molto più lunga rispetto al test del buco con tutte le classi di test :) – Hypnus
Sento il tuo dolore :-(. Se dovessi fare anche questo, per i test con setup complicato (anche se era solo per classe). Una sorta di bandiera "Sono già inizializzato" è probabilmente la soluzione migliore. – sleske
- 1. Suite parametrizzate in Junit 4?
- 2. Escludere alcuni test JUnit dalla suite di test automatizzata
- 3. C: libreria di prove POSIX thread suite
- 4. Passaggio di dati JUnit tra prove
- 5. Gradle esegue solo una suite di test
- 6. Junit: test delle classi di query
- 7. Arresto suite di JUnit se particolare test fallisce
- 8. Esecuzione della suite di test JUnit utilizzando Maven
- 9. come esportare la suite di test (JUnit) come jar eseguibile
- 10. Fitnesse: come eseguire test specifici su più suite di test
- 11. Aggiunta di una suite di test aggiuntiva a Gradle
- 12. Come posso eseguire test individuali con Test :: Class :: Load?
- 13. È possibile generare in modo programmatico casi di test e suite JUnit?
- 14. Riutilizzo di implementazioni di test in JUnit 4?
- 15. Raggruppamento di test JUnit
- 16. Test unità JUnit e Clojure
- 17. Come mantenere il codice Java e le prove di Junit costruendo insieme con Gradle
- 18. Un test watcher di riportare i risultati dei singoli test in JUnit Suite
- 19. Separazione delle classi JUnit in un pacchetto di test speciale?
- 20. Come eseguire tutti i test appartenenti a una determinata categoria in JUnit 4
- 21. Classe di test JUnit generica
- 22. JUnit 4 e Suspend-on-Exception
- 23. Esiste un equivalente di @BeforeSuite di testNG in JUnit 4?
- 24. Test ignorando in modo condizionale in JUnit 4
- 25. NUnit per prove di librerie di classi portatili
- 26. parametri @ in Junit 4
- 27. La nuova suite di test di rendering JUnit 4.8.1 @Category è quasi obsoleta?
- 28. Netbeans e creazione di test JUnit
- 29. Rimozione test JUnit testuite ridondanti
- 30. JUnit 4 @BeforeClass e @AfterClass quando si utilizza Suites
Grazie per la risposta, in realtà ho pensato di questo, ma ho pensato che forse ci fosse una soluzione migliore. La ragione di ciò che voglio fare è che la configurazione pulisce l'ambiente e reimposta il database in modo che richieda del tempo e questo è il motivo per cui non voglio eseguire l'installazione per ogni classe di test, ma devo farlo quando eseguo un test individuale. – Hypnus