2010-09-11 12 views
6

Estoy usando Spring 3.0.4 y JUnit 4.5. Mis clases de prueba actualmente utiliza el soporte de pruebas de la anotación de la primavera con la siguiente sintaxis:Spring 3+ Cómo crear un TestSuite cuando JUnit no lo reconoce

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration (locations = { "classpath:configTest.xml" }) 
@TransactionConfiguration (transactionManager = "txManager", defaultRollback = true) 
@Transactional 
public class MyAppTest extends TestCase 

{ 
@Autowired 
@Qualifier("myAppDAO") 
private IAppDao appDAO; 
    ... 
} 

que realmente no necesita la línea extiende TestCase para ejecutar esta prueba. No es necesario cuando se ejecuta esta clase de prueba por sí mismo. He tenido que añadir extiende TestCase para que yo pueda añadir en una clase TestSuite:

public static Test suite() { 
     TestSuite suite = new TestSuite("Test for app.dao"); 
    //$JUnit-BEGIN$ 
    suite.addTestSuite(MyAppTest.class); 
     ... 

Si Omito la extiende TestCase, mi conjunto de pruebas no se ejecutará. Eclipse marcará suite.addTestSuite (MyAppTest.class) como error.

¿Cómo agrego una clase de prueba Spring 3+ a una Suite de prueba? Estoy seguro de que hay una mejor manera. Hice GOOGLEL y leí los documentos. Si no me cree, estoy dispuesto a enviarle todos mis marcadores como prueba. Pero en cualquier caso, preferiría una respuesta constructiva. Muchas gracias.

+0

LOL. Busqué en Google nuevamente y vi mi pregunta en los resultados de Google. Voy a buscar de nuevo :) – chris

+1

El propio Rod Johnson escribió: "Spring sí tiene un excelente conjunto de pruebas unitarias" (http://www.theserverside.com/news/1363858/Introduction-to-the-Spring-Framework). ¿Dónde está documentado este excelente conjunto de pruebas? – chris

+0

¡La URL que diste no funciona! – adranale

Respuesta

6

Tienes razón; pruebas de estilo junit4 no deben extenderse junit.framework.TestCase

Usted puede incluir una prueba junit4 como parte de una suite JUnit3 esta manera:

public static Test suite() { 
    return new JUnit4TestAdapter(MyAppTest.class); 
} 

Por lo general, deberá añadir este método a la clase MyAppTest. A continuación, puede añadir esta prueba a su suite más grande:

public class AllTests { 
    public static Test suite() { 
    TestSuite suite = new TestSuite("AllTests"); 
    suite.addTest(MyAppTest.suite()); 
    ... 
    return suite; 
    } 
} 

Puede crear una suite de estilo junit4 mediante la creación de una clase anotada con Suite

@RunWith(Suite.class) 
@SuiteClasses({ AccountTest.class, MyAppTest.class }) 
public class SpringTests {} 

Tenga en cuenta que AccountTest podría ser una prueba de estilo junit4 o una prueba estilo JUnit3.

+0

Muchas gracias. ¡Probé tu primera sugerencia y funcionó! Esperaba que Spring tuviera su propio banco de pruebas escrito por Rod Johnson. Pero tal vez quiso decir de manera diferente. – chris

+0

Problema resuelto. – chris

Cuestiones relacionadas