2012-05-02 33 views
13

Estos son mis casos de pruebaprueba JUnit parada en el método @Before sin fallar

class Mother { 

    @Before 
    public void setUp() { 
     if (!this.getClass().isAnnotatedWith("Version20")) { // pseudo code 
      /* 
      * stop this test without failing! 
      */ 
     } 

     // further setup 
    } 
} 


@Version20 
class Child extends Mother { 

    @Test 
    public void test() { 
     // run only when Version == 20 
    } 
} 

¿Es posible detener la prueba en el niño en el método de la Madre @Before sin fallar o assertTrue (falsa)?

editar: Tengo más Versiones @ Version19, @ Version18 etc. mi software está leyendo un archivo de configuración y al emitir el resultado algunas pruebas solo son aplicables para Versiones especiales. que no quieren hacer la comprobación de versión en el método de prueba porque tengo un montón de pruebas pequeñas y no me gusta la duplicación de código

+4

Por qué no sólo use '@ ignore', si va a anotar las pruebas de todos modos? – weltraumpirat

+0

¿Qué le parece agregar el cheque de la Versión 20 dentro del método de prueba? –

+0

posible duplicado de [Ignorar condicionalmente pruebas en JUnit 4] (http://stackoverflow.com/questions/1689242/conditionallyigning-tests-in-junit-4) – oers

Respuesta

17

le pregunté a un similar question anteriormente - el resultado fue que se puede utilizar la clase Assume 'métodos para deshabilitar una prueba basada en en tiempo de ejecución comprobar (mientras que @Ignore es una condición estática).

Dicho esto, si está siempre deshabilitándolos en función de una anotación específica, parece que en realidad no necesita hacer esto en tiempo de ejecución. Simplemente hacer anotaciones en las clases con @Ignore y @Version20 haría el trabajo, y podría decirse que sería más claro.

Aunque sospecho que podría estar haciendo caso sólo si la prueba se ejecuta en "1.0 modo" - en cuyo caso se trata de una introspección en tiempo de ejecución, y se podía hacer esto con algo como:

@Before 
public void setUp() { 
    if (!this.getClass().isAnnotatedWith("Version20")) { 
     final String version = System.getProperty("my.app.test.version"); 
     org.junit.Assume.assumeTrue(version.equals("2.0")); 
    } 
} 
+0

¡Gracias, exactamente lo que estaba buscando! –

Cuestiones relacionadas