Domanda

Voglio essere in grado di eseguire tutti i test in un progetto a livello di codice. So che Eclipse ha una configurazione "Esegui come test JUnit", che prende in qualche modo tutte le prove in un progetto ed eseguirli. C'è un modo per me di afferrare anche l'elenco delle prove a livello di codice ed eseguirli? O c'è qualche buon modo per costruire una suite di test che contiene tutti i casi di test senza elencare manualmente ciascuno (tutti 700+) di loro?

Ho provato il "Nuovo ... -> Test Suite" opzione in Eclipse, ma che sembra funzionare solo per JUnit 3, identificando le prove da loro che si estende da TestCase

Le classi di test sono JUnit 4, quindi la loro caratteristica unica distinzione è l'annotazione, senza convenzione di denominazione, senza sottoclasse da TestCase.

Grazie in anticipo!

È stato utile?

Soluzione

Anche se in realtà non risolve il problema immediato, la trovo una pratica generale molto utile per creare suite e suite di suite, per esempio per un pacchetto di qualcosa come PackageFooSuite ecc e montare queste suite in uno o più suite di nuovo, come ModuleFooSuite ed avere una suite di livello superiore, come AllTestsSuite. In questo modo è facile da eseguire sia tutte le prove in un passo così come le prove per modulo per il pacchetto sto attualmente lavorando su (ed avere i test eseguiti più rapidamente di quanto se mi sarebbe sempre correre tutti):

@RunWith(Suite.class)
@Suite.SuiteClasses({ PackageFooSuite.class, PackageBarSuite.class} )
public final class AllTestsSuite {} // or ModuleFooSuite, and that in AllTests

Altri suggerimenti

Nessuna delle altre risposte ha fatto per me. Ho avuto 40k test avevo bisogno di correre, quindi elencando manualmente ogni classe non era un'opzione.

L'ho fatto con ClasspathSuite . Una suite di test che esegue tutti i casi di test e Junit4 Junit3 nel percorso di classe è la seguente:

import org.junit.extensions.cpsuite.ClasspathSuite;
import org.junit.extensions.cpsuite.ClasspathSuite.*;
import org.junit.runner.RunWith;
import org.junit.runner.JUnitCore;
import static org.junit.extensions.cpsuite.SuiteType.*;

@RunWith(ClasspathSuite.class)
@SuiteTypes({ JUNIT38_TEST_CLASSES, TEST_CLASSES })
public class RunAllSuite {
        /* main method not needed, but I use it to run the tests */
        public static void main(String args[]) {
                JUnitCore.runClasses(RunAllSuite.class);
        }
}

ho bisogno di eseguirlo da riga di comando, quindi questo è quello che ho fatto:

  1. scaricati cp-1.2.6.jar
  2. Crea il RunAllSuite già citato
  3. compilare la classe, javac RunAllSuite.java -cp cpsuite-1.2.6.jar;junit-4.8.1.jar
  4. eseguirlo con test di destinazione nel percorso di classe, java -cp cpsuite-1.2.6.jar;junit-4.8.1.jar;path/to/runallsuite/folder;target/classes;target/test-classes RunAllSuite

E questo è tutto. Con il RunAllSuite sopra, qualsiasi punto del codice si può solo fare JUnitCore.runClasses (RunAllSuite.class), che gestisce tutte le prove in percorso della classe. Ci sono altre opzioni di configurazione, così che sono spiegati nella home page ClasspathSuite.

Si noti inoltre che la classe data di cui sopra non stampa nulla. Se ciò che è necessario, si può fare

import org.junit.extensions.cpsuite.ClasspathSuite;
import org.junit.extensions.cpsuite.ClasspathSuite.*;
import org.junit.runner.RunWith;
import org.junit.runner.JUnitCore;
import org.junit.internal.TextListener;
import static org.junit.extensions.cpsuite.SuiteType.*;

@RunWith(ClasspathSuite.class)
@SuiteTypes({ JUNIT38_TEST_CLASSES, TEST_CLASSES })
public class RunAllSuite {
        public static void main(String args[]) {
                JUnitCore junit = new JUnitCore();
                junit.addListener(new TextListener(System.out));
                junit.run(RunAllSuite.class);
        }
}

È possibile farlo abbastanza facilmente dall'interno esperto di utilizzare il infallibile plug-in : di solito pulita / compilare / installare i miei progetti dalla riga di comando prima di confrontarli per l'utilizzo eclisse (mvn eclipse:clean eclipse:eclipse) ed è possibile definire una suite di test nel vostro pom che elenca tutti i test che si desidera eseguire in massa ogni volta che si esegue mvn install . Non stai chiamando li programatically, esattamente, ma si può certamente chiamarli in massa.

In Eclipse (sto usando 4.6.1) - Fare clic destro sulla cartella di progetto, selezionare "Esegui come", scegliere "Test JUnit"

Verrà eseguito tutti i test in quel progetto. Lo stesso vale per un pacchetto.

della parte superiore della mia testa usando Primavera:

  • Implementare una typeFilter che corrisponde classi con metodi annotate con @Test (non dimenticate di prendere in considerazione le superclassi)
  • Invoke classpath scansione sulla più in alto pacchetto di test
  • Richiamare il JUnitRunner con i risultati della scansione

Maggiori informazioni sui filtri di scansione e di tipo personalizzato percorso di classe qui

Con Eclipse Indigo (possibilmente Helios pure) nella finestra di dialogo Esegui configurazioni, ora avete la possibilità di eseguire tutte le prove in una cartella di progetto, pacchetto o sorgente selezionata.

Anche un buon riferimento da Eclipse è il test Java Unità con JUnit 4.x in Eclipse .

Raccomando anche utilizzando le annotazioni di JUnit Suite. Segui il link per maggiori dettagli .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top