2010-09-11 15 views
6

Sto utilizzando Spring 3.0.4 e JUnit 4.5. Le mie classi di test attualmente utilizza il supporto di test annotazioni di primavera con la seguente sintassi:Spring 3+ Come creare un TestSuite quando JUnit non lo riconosce

@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; 
    ... 
} 

non si ha realmente bisogno la linea estende TestCase per eseguire questo test. Non è necessario quando si esegue questa classe di test da solo. Ho dovuto aggiungere estende TestCase in modo che posso aggiungere che in una classe TestSuite:

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

Se Tralascio il estende TestCase, il mio Test Suite non verrà eseguito. Eclipse contrassegnerà suite.addTestSuite (MyAppTest.class) come errore.

Come si aggiunge una classe di test Spring 3+ a una suite di test? Sono sicuro che c'è un modo migliore. Ho GOOGLED e leggo i documenti. Se non mi credi, sono disposto a inviarti tutti i miei segnalibri come prova. Ma in ogni caso, preferirei una risposta costruttiva. Molte grazie.

+0

LOL. Ho cercato nuovamente su Google e ho visto la mia domanda sui risultati di Google. Sto cercando di nuovo :) – chris

+1

Lo stesso Rod Johnson ha scritto, "La stessa primavera ha una suite di test unitaria eccellente" (http://www.theserverside.com/news/1363858/Introduction-to-the-Spring-Framework). Dove è documentata questa eccellente suite di test? – chris

+0

L'URL che hai dato non funziona! – adranale

risposta

6

Hai ragione; test-style JUnit4 non dovrebbero estendersi junit.framework.TestCase

è possibile includere un test di JUnit4 come parte di una suite di JUnit3 in questo modo:

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

Di solito si dovrebbe aggiungere questo metodo per la classe MyAppTest. Si potrebbe quindi aggiungere questo test per la vostra suite più grande:

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

È possibile creare una suite JUnit4 in stile con la creazione di una classe annotata con Suite

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

noti che AccountTest potrebbe essere una prova di stile JUnit4 o un test in stile JUnit3.

+0

Grazie mille. Ho provato il tuo primo suggerimento e ha funzionato! Mi aspettavo che Spring avesse la sua suite di test scritta da Rod Johnson. Ma forse intendeva diversamente. – chris

+0

Problema risolto. – chris

Problemi correlati