2012-04-12 15 views
9

Sto tentando di richiamare una suite di test JUnit utilizzando l'API. So che è possibile connessione internet fino classi di test utilizzando la seguente:Come eseguire a livello di codice una suite di test utilizzando JUnit4?

@RunWith(Suite.class) 
@Suite.SuiteClasses({ 
    Test1.class, 
    Test2.class, ... 
}) 

Ma, c'è un modo per far scattare l'intera suite utilizzando l'API Java, usando JUnitCore per esempio?

Ad esempio, è possibile attivare un test utilizzando il seguente codice:

Runner r = 
try { 
    r = new BlockJUnit4ClassRunner(Class.forName(testClass)); 
} catch (ClassNotFoundException | InitializationError e) { 
    // handle 
} 
JUnitCore c = new JUnitCore(); 
c.run(Request.runner(r)); 

Aggiornamento:

Dal API, sembra che la classe suite in sé è un corridore, da cui il seguente codice sembra funzionare:

Suite suite = new Suite(klass, new RunnerBuilder() { 
... // Implement methods 
}); 
JUnitCore c = new JUnitCore(); 
c.run(Request.runner(suite)); 

Ma io non sono sicuro se questo è un approccio consigliato o se c'è qualche aspetto negativo di scrittura t lui sopra il codice.

risposta

12

Basta specificare il nome della classe Suite per JUnitCore:

Computer computer = new Computer(); 

JUnitCore jUnitCore = new JUnitCore(); 
jUnitCore.run(computer, MySuite.class); 
+0

Grazie Matteo! Farò sicuramente una prova. Nel frattempo, hai suggerimenti per lo snippet di codice nel mio aggiornamento? – Neel

4

È anche possibile che l'uso di prompt dei comandi come

java prova org.junit.runner.JUnitCore nome della classe

+5

Non penso che questo si qualifichi come "programmaticamente". – oers

+1

Lo chiamerà utilizzando runtime.exec –

+2

o JunitCore.main (testClassName) –

Problemi correlati