2009-10-20 16 views
10

Actualmente estoy trabajando en un proyecto que usa JUnit4 extensivamente en todos los módulos. Estamos usando Maven2 para construir el proyecto y Hudson para una integración continua. El proyecto está construido y se ejecuta bajo Java 1.5.¿Es posible ignorar ciertas pruebas unitarias?

Recientemente hemos agregado una gran cantidad de pruebas unitarias que se necesitan a veces, pero que no se quieren ejecutar durante el proceso de compilación (pero otras pruebas unitarias en el mismo proyecto sí).

Quiero saber si hay algún tipo de anotación que se puede aplicar a las pruebas, o alguna configuración que se puede hacer a Maven que ignoraría las pruebas unitarias que viven bajo cierto paquete o en cierta clase de prueba en la construcción ¿hora?

Posiblemente haya la alternativa de simplemente poner estas pruebas particulares en una clase normal que se ejecutará a través de main, pero eso no es ideal.

Gracias por sus sugerencias

Respuesta

15

Puede configurar maven-surefire-plugin.

Por ejemplo:

<project> 
<build> 
<plugins> 
    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.4.2</version> 
    <configuration> 
     <excludes> 
     <exclude>**/TestCircle.java</exclude> 
     <exclude>**/TestSquare.java</exclude> 
     </excludes> 
    </configuration> 
    </plugin> 
</plugins> 

EDIT:
Otra solución es definir profiles en el que todas las pruebas se llevará a cabo, por ejemplo, por Hudson. En el modo de desarrollo puede usar un subconjunto de todas las pruebas para acelerar el desarrollo (o todas las pruebas pueden estar en el perfil predeterminado, la prueba elegida en el perfil dev - por lo que necesita ejecutar maven con el atributo -PprofileName). Este ejemplo se adapta mejor a las pruebas de integración que tardan en ejecutarse.

+0

+1 para perfiles (en cuanto a las pruebas de integración, prefiero ubicarlas en 'src/test/it' y ejecutarlas durante la fase' integration-test') –

+0

Genial, gracias por esto eche un vistazo a ambas soluciones y decida cuál se adapta mejor. –

+0

@James. Tenga en cuenta que la solución con perfiles también necesita una configuración de plugin segura. @Pascal. Sí, tienes razón, yo hago lo mismo que tú. Pero a veces escribir una prueba de unidad * pure * es difícil, y siempre es una tentación probar un poco más y todavía llamarlo * prueba de unidad * :) – cetnar

3

nunca lo han probado, pero podrían poner las pruebas adicionales en una carpeta de origen diferente, y configurar el script de compilación para incluir o excluir de acuerdo a su tipo de generación?

+0

Interesante, no es mala idea. Si no aparece nada más, lo investigaré. Cheers –

1

JUnit 4.7 Creo que es compatible con "reglas" para este tipo de cosas (pre 4.7 Creo que podría tener corredores utilizados personalizados que comprobaría una variable de entorno).

O podría mirar las etiquetas de inclusión/exclusión de su sistema de compilación.

8

Hay una anotación "Omitir", pero es manual trabajo para agregarlos, no estoy seguro si eso ayuda.
Se puede utilizar un método de ensayo o una clase entera

@Ignore("not ready yet") @Test public void testSomething() {... 

o

@Ignore public class SomeTest { 
    @Test public void testSomething() {... 
} 

[]]