Domanda

Ho una suite di test JUnit 4 con metodi BeforeClass e AfterClass che effettuano un'installazione/smontaggio per le seguenti classi di test.Ciò di cui ho bisogno è eseguire le classi di test anche da sole, ma per questo ho bisogno di uno scenario di installazione/smontaggio (BeforeClass e AfterClass o qualcosa del genere) per ogni classe di test.Il fatto è che quando eseguo la suite non voglio eseguire l'installazione/smontaggio prima e dopo ogni lezione di test, voglio solo eseguire l'installazione/smontaggio dalla suite di test (una volta).È possibile ?Grazie in anticipo.

È stato utile?

Soluzione

Non conosco alcun modo standard per farlo con JUnit.La ragione di ciò, come probabilmente già saprai, è che i tuoi casi di test dovrebbero essere eseguiti indipendentemente l'uno dall'altro.Ciò riguarda i metodi di installazione/smontaggio "normali" che vengono eseguiti prima e dopo ciascun metodo di prova.La configurazione e lo smontaggio delle classi però sono leggermente diversi, anche se preferirei comunque eseguire i miei test in modo indipendente e rimanere fuori dalla zona problematica.

Tuttavia, se sei davvero convinto di ciò che stai facendo, potresti utilizzare un flag globale per segnalare se l'impostazione/smontaggio della classe deve essere eseguita o meno e per verificare il suo stato nei metodi di installazione/smontaggio della classe.Nella tua suite di test, potresti includere una classe speciale come prima, che non fa altro che eseguire il setup e impostare il flag globale per indicare ai casi di test reali che i loro metodi di setup/smontaggio della classe non devono essere eseguiti.Allo stesso modo, un'ultima classe speciale della suite può eseguire il codice di smontaggio.L'avvertenza è che temo che JUnit non garantisca l'ordine di esecuzione delle classi di test all'interno di una suite, anche se molto probabilmente le esegue nell'ordine specificato, ma questo è solo un dettaglio di implementazione.Provatelo, potrebbe funzionare per voi, ma non vi è alcuna garanzia che faccia sempre quello che vi aspettate.

Altri suggerimenti

Se si dispone di JUnit 4.7+ mi raccomando esaminando la nuova funzionalità chiamata regole (che sono spiegati in questo post del blog ). Potrebbero non essere esattamente quello che vuoi, ma sono probabilmente la migliore che si ottiene con JUnit.

Si suppone TestNG ha una migliore prova di raggruppamento possibilità, ma non ho davvero guardato dentro me stesso ancora.

No, non c'è un modo standard per fare questo in JUnit, anche se si potrebbe incidere qualcosa come suggerito Péter Török.

Si noti tuttavia che si sta più o meno abusando JUnit nel fare questo. Il punto di unità test è che essi sono singola l'uno dall'altro. Questo perché le dipendenze tra i test di creare un incubo di manutenzione totale (test in mancanza perché l'esecuzione nell'ordine sbagliato).

Quindi vi consiglio di prendere in considerazione con forza se non è meglio correre appena sempre il setup ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top