2009-12-07 9 views
10

Ich war überrascht, die Antwort bis jetzt nicht zu finden. Wenn ich etwas Grundlegendes vermisse, bin ich mehr als glücklich, das zu wissen.Upgrade auf JUnit4 und Bewahren Vermächtnis JUnit 3 Tests und Testsuiten, indem sie zusammen laufen

Es gibt eine große ältere Codebasis, die auf Java 6 (von 1.4) aktualisiert wurde. Eine große Anzahl von JUnit 3-Tests ist im Code vorhanden und in einer Testsuite organisiert, die erfolgreich mit dem JUnit 4-Standard-Runner in Eclipse ausgeführt wird.

Nun, ich füge neue Tests, die reine JUnit 4 Tests sind (Anmerkungen, kein Testfall, etc.). Was wäre eine Möglichkeit, sowohl die alte JUnit 3 Testsuite als auch die neuen JUnit 4 Tests zusammen zu betreiben?

+0

Ich würde antworten, dass wir dies mit einer AntTask tun, aber ich denke, du meinst nur Eclipse. Wenn ja, bitte eclipse markieren. – shoover

+1

@shoover - Nein, ich meine nicht nur Eclipse. Ich suche nach einer generischen Lösung, die Tests nur mit Java ausführen würde. – topchef

Antwort

12

Verwenden Sie den 'JUnit4' Test Runner in Ihrer Laufkonfiguration.

JUnit4-Binärdateien verfügen über eine Rückwärtskompatibilitätsschicht, die die Verwendung von JUnit3- und JUnit4-Stilklassen in derselben Testsuite ermöglicht.

Verwenden Sie für Befehlszeilen-Builds nur JUnit4-Jars statt JUnit3.

Dies wurde speziell zur Erleichterung der Migration gemacht, die Sie jetzt tun.

Auch funktioniert es gut in meinem Projekt.

+0

Alex, danke, aber ich suchte nach einer konkreteren Lösung - dank deiner Antwort glaube ich, dass ich eine gefunden habe. Ich füge es als Antwort hinzu und gebe dir dafür eine Anerkennung. – topchef

+0

Können Sie dieses Problem überprüfen? Ich bin mir nicht sicher, wie man Junit4 vs Junit3 konfigurieren kann. (Hier) [http://stackoverflow.com/q/26848673/668650] ist das Problem. –

9

Die @RunWith (Suite.class) gibt mir Gelegenheit, sowohl JUnit 4 und JUnit-3-Tests und Testfälle miteinander zu kombinieren:

@RunWith(Suite.class) 
@Suite.SuiteClasses({ 
    ExampleOfJunit3TestSuite.class, 
    ExampleOfJUnit3TestCase.class, 
    ExampleOfJUnit4TestSuite.class, 
    ExampleOfJUnit4TestCase.class}) 
public class BothJUnit4and3TestSuite { 
} 

Die BothJUnit4and3TestSuite Läufe alle Tests und Testsuiten aufgeführt in @ Suite.SuiteClasses.