2011-09-07 18 views
19

Ciò è possibile in JUnit4?JUnit4 esegue tutti i test in un pacchetto specifico utilizzando una suite di test

In JUnit3, vorrei fare le seguenti operazioni:

public class MyTestSuite { 

    public static Test suite() throws Exception { 
    doBeforeActions(); 

    try { 
     TestSuite testSuite = new TestSuite(); 
     for(Class clazz : getAllClassesInPackage("com.mypackage")){ 
      testSuite.addTestSuite(clazz); 
     } 
     return testSuite; 
    } finally { 
     doAfterActions 
    } 
    } 

... 

} 
+0

Hai provato a eseguirlo con junit4? – bbaja42

+0

@ bbaja42 Non voglio eseguire questo con junit4, voglio usare le annotazioni junit4 per i miei test ed eseguirli tutti usando una suite di test. – Fortega

+1

Una risposta "effettiva" a questa domanda sarebbe piacevole. In qualche modo, Eclipse è in grado di realizzare ciò facendo clic su una piccola casella di controllo nel pannello di configurazione della corsa di JUnit. – djangofan

risposta

17

The takari-cpsuite (originariamente sviluppato da Johannes Link) offre un percorso di classe-suite che dovrebbe soddisfare le vostre esigenze. Esso consente il filtraggio delle classi nel classpath per le espressioni regolari come:

import org.junit.extensions.cpsuite.ClasspathSuite.*; 
... 
@ClassnameFilters({"mytests.*", ".*Test"}) 
public class MySuite... 
+0

Funzionerà senza alcuna annotazione '@ RunWith'? – Dims

12

È possibile utilizzare JUnitToolBox:

@RunWith(WildcardPatternSuite.class) 
@SuiteClasses("**/*Test.class") 
public class MySuite { 
} 

Maven config:

<dependency> 
<groupId>com.googlecode.junit-toolbox</groupId> 
<artifactId>junit-toolbox</artifactId> 
<version>1.5</version> 
</dependency> 

vedere https://code.google.com/p/junit-toolbox/ per maggiori dettagli.

+0

Ho provato questo, ma non funziona. Continuo a ricevere l'errore "Impossibile scansionare ...". – SobiborTreblinka

+0

Può solo analizzare i pacchetti nella sua cartella e sottocartella. Quindi è necessario creare un AllTestSuite in com [yourCompany]. A proposito. Questa configurazione ("**/* Test.class") presuppone che tutte le classi di test terminino in "Test". – borjab

+1

Attenzione non funziona se il test è confezionato in un barattolo. C'è una richiesta aperta per risolvere questo. https://code.google.com/p/junit-toolbox/issues/detail?id=2 – EstebanGarciaAlonso

Problemi correlati