2009-01-05 3 views
47

Ist es möglich, JUnit-Tests gleichzeitig für mehrere Pakete auszuführen, ohne manuell Testsuites erstellen zu müssen?Ist es möglich, JUnit-Tests von mehreren Paketen in Eclipse auszuführen?

Zum Beispiel, wenn ich die Hierarchie haben:

code.branchone
code.branchone.aaa
code.branchone.bbb
code.branchtwo
code.branchtwo.aaa
code.branchtwo .bbb

Ist es möglich:

  1. Führen Sie alle Tests in code.branchone und in Nachkommen Paketen
  2. Run alle Tests in etwa code.branchone.aaa und code.branchtwo.bbb

Das Problem, das ich mit dem manuellen Erstellung Test-Suiten zu sehen ist, dass, wenn neue Tests kommen, Sie vergessen vielleicht, sie hinzuzufügen.

+5

Keine der folgenden Antworten funktionieren. Ich habe das gleiche Problem. Ich kann alle Tests in "code.branchone.aaa" ausführen, aber wenn ich zur Wurzel "code.branchone" gehe, heißt es "Kein Test gefunden mit Testläufer 'Junit 4'". Denken Sie daran, dass "code.branchone" keine Quelle enthält. – Bdoserror

+0

Zusätzliche Verwirrung Hinweis: Mein Projekt (von jemand anderem gebaut) hat bereits eine Startkonfiguration, die von einem höheren Verzeichnis in der Hierarchie ("Code") funktioniert. Ich kopierte diese Konfiguration und änderte sie für das gewünschte Unterverzeichnis, es funktioniert immer noch nicht und diese Verzeichnisspezifikation ist der einzige Unterschied zwischen ihnen. – Bdoserror

+0

Hmm, vielleicht liegt das Problem daran, dass das, was funktioniert, von einem Verzeichnis läuft, das "Unterprojekt" (?) Unter dem Hauptprojekt ist. z.B. In diesem Setup läuft die Working Config für "src/it/java": Projekt (root of tree) mit 1 Kind, src/it/java Und das, was ich will, ist ein Unterverzeichnis von src/it/java und in Die Quellansicht des gemeinsamen Elternteils der Unterverzeichnisse, die ich ausführen möchte, hat keinen eigenen Eintrag. zB: Project (root) hat src/it/java als untergeordnet, und srt/it/java hat 2 untergeordnete Elemente, sub1A & sub1b, und ich möchte alle Tests von src/it/java/sub1 ausführen – Bdoserror

Antwort

1

Ich glaube, dass Sie alle Ihre Testpakete zu einem einzigen Verzeichnis hinzufügen können. Wenn Sie mit der rechten Maustaste auf dieses Verzeichnis klicken, sollte die Option "Ausführen als -> JUnit-Test" verfügbar sein. Dadurch werden alle im Verzeichnis enthaltenen Tests ausgeführt und alles, was Sie hinzugefügt haben, wird abgefangen. Irgendwelche neuen Tests werden dort mit dem Rest von ihnen eingefügt und egal welchen Paketnamen Sie haben, spielt keine Rolle. Hoffe, dass

1

Sicher, die rechte Maustaste auf den Paketen, die Sie mögen, und wählen Sie Ausführen als ... JUnit-Test

+3

Dies funktioniert nur bei Auswahl eines Pakets. – SpaceTrucker

1

in Eclipse auf dem Debug/run-Konfigurationen finden Sie die folgenden Möglichkeiten:

  1. Führen Sie einen einzigen Test
  2. Run alle Tests im ausgewählten Projekt, ein Paket oder Quellordner

ich denke, die zweite Option Ihr Freund ist in diesem Fall.

+14

, aber Sie können nicht Tests von verschiedenen Paketen –

3

Ich bin mir sicher, dass Sie das ein wenig zwicken können. Erstellen Sie eine Collection der Eigenschaft CLASSES_DIR, und führen Sie eine Schleife in der findClasses-Methode durch. (Junit4)

http://burtbeckwith.com/blog/?p=52

+0

ausführen Ich habe dies auch auf andere Weise als die, die Sie vorgeschlagen, mit Anmerkungen verwendet. Dieser Link ist wirklich nützlich! – oshai

18

Eine andere Art und Weise: (. In Eclipse, nicht hier :))

Klicken Sie auf das schwarze Dreieck, das durch rotes Rechteck im Bild unten bezeichnet

enter image description here

Öffnen Sie anschließend die Laufkonfigurationen, erstellen Sie eine neue Konfiguration und legen Sie dann "Alle Tests ausführen ..." fest, wie im Bild unten gezeigt.

enter image description here

+4

Nur auf dem Quellcode (Stamm des Klassenpfads) werden alle Komponententests des Projekts ausgeführt. Wenn es auf einem bestimmten Paket ausgewählt wird, werden nur die Tests innerhalb des gewählten Pakets selbst ausgeführt, nicht jedoch die Tests aus den Unterpaketen. – Heri

22

Ja, ist es möglich. Der einfachste Weg für mich ist mindestens eine Test-Suite-Klasse hinzuzufügen.Es kann wie folgt aussehen:.

package tests; 

import org.junit.runner.RunWith; 
import org.junit.runners.Suite; 
import org.junit.runners.Suite.SuiteClasses; 

import tests.message.ATest; 
import tests.validator.BTest; 
import tests.validator.CTest; 
import tests.validator.DTest; 

@RunWith(Suite.class) 
@SuiteClasses({ ATest.class, 
     BTest.class, 
     CTest.class, 
     DTest.class }) 
public class AllTests { 

} 

Das Sie jede Klasse testen können, die Sie egal importieren, welches Paket es ist in, um diese in Eclipse ausführen klicken Sie einfach rechts die AllTests Klasse und führen Sie es als JUnit-Test . Es führt dann alle Tests aus, die Sie in @SuiteClasses definieren.

Dies funktioniert auch mit verknüpften Quellen, ich benutze es die ganze Zeit.

+3

Ich nehme an, dass es keine Möglichkeit gibt, Paketnamen oder Platzhalter mit @ SuiteClasses zu verwenden, oder? Ich habe http://johanneslink.net/projects/cpsuite.jsp, http://burtbeckwith.com/blog/?p=52 und http://stackoverflow.com/questions/1293880/run-all- tests-in-a-source-tree-not-a-package, aber keines ist so gut wie eine Lösung, auf die ich gehofft hatte. – iX3

+0

Bin mir nicht sicher, habe es nie versucht. – span

+0

Dies half mir, ein Problem zu lösen, bei dem sich zwei Testfälle gegenseitig störten (getrennt waren sie grün, aber fehlgeschlagen, wenn sie in einer Sequenz ausgeführt wurden). Netter Trick :-) – rlegendi

9

Vielleicht nicht genau, was die ursprüngliche Frage war, aber Sie können problemlos alle Tests eines ganzen Projekts ausführen, indem Sie einfach mit der rechten Maustaste auf das Projekt -> Ausführen als JUnitTest. Machen Sie sich keine Sorgen, wo sich die annotierten Klassen befinden. Dies wird gescannt.

Dies funktioniert nicht, wenn es auf den Test-src-Ordner oder ein Paket mit Unterpackages angewendet wird. Ziemlich schade eigentlich -.-

+3

IMO das ist die richtige Antwort. – Heri