2011-02-24 14 views
5

Tengo muchos métodos de prueba de primavera en una clase de prueba. quiero ejecutar solo pruebas selectivas. Entonces quiero crear un conjunto de pruebas en la misma clase.¿Cómo escribir el conjunto de pruebas de primavera de múltiples pruebas y ejecutar pruebas selectivas?

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations={"/testApplicationContext.xml"}) 
@TransactionConfiguration(defaultRollback=true) 
public class TestersChoice { 


@Test 
@Transactional 
public void testAddAccount(){   
    ///do something .... 
} 


@Test 
@Transactional 
public void testDeleteAccount(){   
    ///do something .... 
} 

@Test 
@Transactional 
public void testReadAccount(){   
    ///do something .... 
} 

}

Si me quedo esta clase TestersChoice todas las pruebas se ejecutarán! Solo quiero ejecutar testReadAccount, no el resto. Quiero crear un conjunto para ejecutar pruebas selectivas. (Deseo evitar eliminar @Test los métodos de prueba anteriores para lograr esto) Algo como en jUnit testcase. Esto es lo que yo era capaz de hacerlo mediante la extensión de la clase TestersChoice a TestCase y la inserción de este método:

public static TestSuite suite(){ 
     TestSuite suite = new TestSuite(); 
     suite.addTest(new TestersChoice("testDeleteAccount")); 
     return suite; 
} 

Pero ahora no estoy extendiendo TestCase así que no puedo añadir instancia TestersChoice a la habitación!

¿Cómo ejecutar pruebas selectivas?

+1

¿Cómo ejecutar las pruebas? ¿Eclipse? Maven? ¿Algo más? –

+0

Los ejecuto en eclipse, pero una vez que todos los trajes de prueba se hayan completado tengo que implementar eventualmente en maven usando el complemento surefire. – supernova

+0

Investigando un poco, veo que los trajes de prueba son posibles en la prueba de primavera si agrega varias clases de prueba para adaptarlas, pero todavía no puedo encontrar nada sobre cómo realizar pruebas selectivas en un archivo de prueba. – supernova

Respuesta

1

si lo que quieres es agrupar tus pruebas, entonces el problema no está en la prueba de resorte sino en JUnit donde no es posible realizar las pruebas de agrupación. Considere cambiar a TestNG (también compatible con Spring OOTB).

TestNG está basado en JUnit pero mucho más potente: consulte comparison.

Grouping es fácil.

cordiales,
Stijn

1

Puede utilizar IfProfileValue (si siempre está utilizando @RunWith(SpringJUnit4ClassRunner.class)) y luego las pruebas de la primavera sólo se ejecutará si se especifica determinadas propiedades del sistema utilizando -D<propertyname>.

0

Utilice el @Ignore en cada método que no desee ejecutar. Tomando su ejemplo:

@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations={"/testApplicationContext.xml"}) @TransactionConfiguration(defaultRollback=true) public class TestersChoice { 


@Test @Transactional @Ignore public void testAddAccount(){   ///do something .... } 


@Test @Transactional @Ignore public void testDeleteAccount(){   ///do something .... } 

@Test @Transactional public void testReadAccount(){   ///do something .... } 

Todos los métodos marcados como @Ignore no se ejecutará

Cuestiones relacionadas