Pregunta

Sin mirar la fuente de Junit (mi próximo paso), ¿hay una manera fácil de establecer el corredor predeterminado que se utilizará con cada prueba sin tener que configurar @Runwith en cada prueba? Tenemos una gran pila de pruebas unitarias, y quiero poder agregar algún soporte en todos los ámbitos sin tener que cambiar cada archivo.

Idealmente, espero algo como: -djunit.runner = "com.example.foo".

¿Fue útil?

Solución

No creo que esto sea posible definir a nivel mundial, pero si escribir su propia función principal es una opción, puede hacer algo similar a través del código. Puedes crear una personalización RunnerBuilder y pasarlo a un Suite junto con sus clases de prueba.

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));

Esto no se integrará con los corredores de prueba de la interfaz de usuario como el de Eclipse, pero para algunos escenarios de prueba automatizados podría ser una opción.

Otros consejos

Junit no admite establecer el corredor a nivel mundial. Puede esconder el @runwith en una clase base, pero esto probablemente no ayude en su situación.

Dependiendo de lo que desee lograr, es posible que pueda influir en el comportamiento de la prueba a nivel mundial mediante el uso de una personalización RunListener. Aquí está cómo configurarlo con el complemento Maven SureFire: http://maven.apache.org/plugins/maven-surefire-plugin/examples/junit.html#using_custom_listeners_and_reporters

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top