Impostazione a livello globale un corridore Junit invece di @RunWith
-
28-10-2019 - |
Domanda
Senza guardare in Junit Source stesso (il mio prossimo passo) esiste un modo semplice per impostare il corridore predefinito da utilizzare ad ogni test senza dover impostare @Runwith in ogni test? Abbiamo un enorme mucchio di test unitari e voglio essere in grado di aggiungere un certo supporto su tutta la scheda senza dover cambiare ogni file.
Idealmente, spero in qualcosa di simile: -djunit.runner = "com.example.foo".
Soluzione
Non credo che ciò sia possibile definire a livello globale, ma se scrivere la tua funzione principale è un'opzione, puoi fare qualcosa di simile tramite il codice. Puoi creare un'usanza RunnerBuilder
e passalo a un Suite
insieme alle tue lezioni di test.
Class<?>[] testClasses = { TestFoo.class, TestBar.class, ... };
RunnerBuilder runnerBuilder = new RunnerBuilder() {
@Override
public Runner runnerForClass(Class<?> testClass) throws Throwable {
return new MyCustomRunner(testClass);
}
};
new JUnitCore().run(new Suite(runnerBuilder, testClasses));
Questo non si integrerà con i test di test dell'interfaccia utente come quello di Eclipse, ma per alcuni scenari di test automatizzati potrebbe essere un'opzione.
Altri suggerimenti
Junit non supporta l'impostazione del corridore a livello globale. Puoi nascondere il @RunWith in una classe base, ma questo probabilmente non ti aiuterà nella tua situazione.
A seconda di ciò che vuoi ottenere, potresti essere in grado di influenzare il comportamento del test a livello globale usando un'usanza RunListener
. Ecco come configurarlo con il plug -in Maven Surefire: http://maven.apache.org/plugins/maven-surefire-plugin/examples/junit.html#using_custom_listeners_and_reporters