2011-09-07 9 views
19

¿Es esto posible en JUnit4?JUnit4 ejecuta todas las pruebas en un paquete específico usando un banco de pruebas

En JUnit3, yo haría lo siguiente:

public class MyTestSuite { 

    public static Test suite() throws Exception { 
    doBeforeActions(); 

    try { 
     TestSuite testSuite = new TestSuite(); 
     for(Class clazz : getAllClassesInPackage("com.mypackage")){ 
      testSuite.addTestSuite(clazz); 
     } 
     return testSuite; 
    } finally { 
     doAfterActions 
    } 
    } 

... 

} 
+0

¿Has intentado ejecutarlo con junit4? – bbaja42

+0

@ bbaja42 No quiero ejecutar esto con junit4, quiero usar las anotaciones junit4 para mis pruebas y ejecutarlas todas usando una suite de pruebas. – Fortega

+1

Una respuesta "real" a esta pregunta sería agradable. De alguna manera, Eclipse puede lograr esto haciendo clic en una pequeña casilla de verificación en el panel de configuración de ejecución de JUnit. – djangofan

Respuesta

17

The takari-cpsuite (desarrollado originalmente por Johannes Link) ofrece una ruta de clases suite, que debe ajustarse a sus necesidades. Se permite el filtrado de las clases en la ruta de clases de expresiones regulares como:

import org.junit.extensions.cpsuite.ClasspathSuite.*; 
... 
@ClassnameFilters({"mytests.*", ".*Test"}) 
public class MySuite... 
+0

¿Funcionará sin ninguna anotación '@ RunWith'? – Dims

12

Puede utilizar JUnitToolBox:

@RunWith(WildcardPatternSuite.class) 
@SuiteClasses("**/*Test.class") 
public class MySuite { 
} 

Maven config:

<dependency> 
<groupId>com.googlecode.junit-toolbox</groupId> 
<artifactId>junit-toolbox</artifactId> 
<version>1.5</version> 
</dependency> 

ver https://code.google.com/p/junit-toolbox/ para más detalles.

+0

Probé esto, pero no funciona. Sigo recibiendo el error "no se pudo escanear ...". – SobiborTreblinka

+0

Solo puede escanear paquetes en su carpeta y subcarpeta. Por lo tanto, debe crear un AllTestSuite en com. [Su empresa]. Por cierto. Esta configuración ("**/* Test.class") asume que todas sus clases de prueba terminan en "Prueba". – borjab

+1

Tenga cuidado, no funciona si la prueba está empaquetada en un contenedor. Hay una solicitud abierta para resolver esto. https://code.google.com/p/junit-toolbox/issues/detail?id=2 – EstebanGarciaAlonso

Cuestiones relacionadas