2012-04-12 12 views
9

Estoy tratando de invocar un conjunto de pruebas JUnit utilizando la API. Sé que puede suite de hasta clases de prueba utilizando la siguiente:¿Cómo ejecutar mediante programación un conjunto de pruebas utilizando JUnit4?

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

embargo, hay una manera de activar el paquete completo con la API de Java, utilizando JUnitCore por ejemplo?

Por ejemplo, puede desencadenar una prueba usando el siguiente código:

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

Actualización:

de la API, parece que la propia clase Suite es un corredor, por lo tanto, la siguiente código parece funcionar:

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

pero no estoy seguro si esto es un enfoque recomendado o si hay alguna desventaja de escritura t él encima del código.

Respuesta

12

basta con especificar el nombre de la clase conjunto de JUnitCore:

Computer computer = new Computer(); 

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

Gracias Matthew! Definitivamente voy a darle una oportunidad. Mientras tanto, ¿tienes recomendaciones para el fragmento de código en mi actualización? – Neel

4

También puede que el uso de símbolo del sistema como

java nombre de la clase de prueba org.junit.runner.JUnitCore

+5

No creo que esto califique como "programáticamente". – oers

+1

Lo hará si lo llama usando runtime.exec –

+2

o JunitCore.main (testClassName) –

Cuestiones relacionadas