2012-09-24 40 views
7

He Junit 4.8.2 y Maven 3 Algunas pruebas en mi solicitud deben fallar la estructura en caso de fallo y algunos de ellos no deberían (simplemente informar que las siguientes pruebas opcionales no)JUnit pruebas opcionales/requeridos

¿Cómo puedo hacerlo con junit y si no puedo entonces tal vez probar?

E.g. Tengo dos casos de prueba:

En primer lugar, no es realmente importante y puede fallar debido al tiempo de espera de la conexión, la indisponibilidad del servicio y así sucesivamente. Así que si fallan, no quiero fallar acumulación conjunto, sólo para que el usuario sepa acerca de ello y escribir a la consola

En segundo lugar es realmente importante y si fallan - acumulación no debe ser así

Sé sobre @Ignore: no es lo que estoy buscando, porque no quiero omitir ninguna prueba.

Sé acerca de @Category así que si sabes cómo configurar el complemento surefire para decir: si la categoría com.me.Required - build debería fallar en caso de falla y si la categoría com.me.Optional - build no debe ser fallido

+0

¿Cuál es exactamente su pregunta? ¿Has escrito casos de prueba que fallarán o no? ¿Como se ven? ¿Cómo se ve tu pom? – khmarbaise

+0

He actualizado mi pregunta. Por favor, eche un vistazo –

Respuesta

3

Considere utilizar el complemento failsafe para las pruebas que pueden fallar y establezca el indicador testFailureIgnore en verdadero.

Para use el plugin a prueba de fallos que hay que añadir el plugin para que POM

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>foo.bar</groupId> 
    <artifactId>test</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 

    <dependencies> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.10</version> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-failsafe-plugin</artifactId> 
       <version>2.12.4</version> 
       <executions> 
        <execution> 
         <goals> 
          <goal>integration-test</goal> 
          <goal>verify</goal> 
         </goals> 
        </execution> 
       </executions> 
       <configuration> 
        <testFailureIgnore>true</testFailureIgnore> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

El plug-in de éxito seguro será por defecto la ejecución de test denominada como Test. El plugin failsafe ejecutará por defecto la prueba nombrada como IT.

Teniendo en cuenta las pruebas

import static org.junit.Assert.*; 

import org.junit.Test; 

public class SurefireTest { 

    @Test 
    public void test() { 
     assertTrue(true); 
    } 

} 

y

import static org.junit.Assert.*; 

import org.junit.Test; 

public class FailsafeIT { 

    @Test 
    public void test() { 
     assertTrue(false); 
    } 

} 

Operando mvn install ahora resultará en

[INFO] Scanning for projects... 
[INFO] 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building test 0.0.1-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
. 
. 
. 
------------------------------------------------------- 
T E S T S 
------------------------------------------------------- 
Running SurefireTest 
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.062 sec 

Results : 

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 
. 
. 
. 
------------------------------------------------------- 
T E S T S 
------------------------------------------------------- 
Running FailsafeIT 
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.072 sec <<< FA 
ILURE! 
... 
Results : 

Failed tests: test(FailsafeIT) 

Tests run: 1, Failures: 1, Errors: 0, Skipped: 0 
. 
. 
. 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 3.174s 
[INFO] Finished at: Sat Sep 29 08:19:38 CEST 2012 
[INFO] Final Memory: 9M/245M 
[INFO] ------------------------------------------------------------------------ 
+0

¿Está permitido aplicar testFailureIgnore a todas las pruebas?No lo creo –

+0

@Sergey Kravchenya No creo que esta opción esté disponible. Así que sugiero ejecutar la prueba que no debería fallar con el plugin surefire y ejecutar la prueba que puede fallar con el complemento failsafe (y testFailureIgnore establecido en 'true') – FrVaBe

+0

¿es posible tener dos plugins juntos? Si es así, edite su respuesta y la marcaré como aceptada :) Gracias –

1
Cuestiones relacionadas