Wie kann ich einen benutzerdefinierten JUnit4 Runner auf JUnit3-Testklassen mit Ant ausführen?

8

Wir haben Testklassen, die auf AbstractTransactionalDataSourceSpringContextTests von Spring 2.0.8 basieren. Es gibt eine große Anzahl von diesen, die alle im JUnit3-Stil geschrieben sind.

Um die JUnit 4-Filterung zu verwenden, haben wir einen Ersatz-JUnit38Runner entwickelt, der es uns ermöglicht, diese Tests einer bestimmten Anwendungsumgebung zuzuordnen und sie entsprechend zu filtern.

Die gesamte Testsuite läuft außerhalb von Ant einwandfrei, indem Sie die Annotation @RunWith auf unserem benutzerdefinierten JUnit38Runner verwenden.

Wenn wir jedoch versuchen, in Ant zu laufen, werden einzelne Tests entweder als junit.framework.TestSuite oder in einem JUnit4TestAdapter ausgeführt, die beide @RunWith-Annotationen unter JUnit4 ignorieren. Um die Sache noch schlimmer zu machen, werden unsere bestehenden Suites explizit von Ant außer Kraft gesetzt, das die suite () -Methoden direkt aufruft, anstatt sie an JUnit zu delegieren.

Ich habe versucht, von Ant JUnitTestRunner zu erweitern und überschreibe einfach die run () -Methode, aber die Klasse wird einfach nicht für die Erweiterung geschrieben.

Abgesehen davon, dass wir den ganzen JUnitTestRunner kopiert haben und ihn gehackt haben (was uns zu spröden Code-Problemen führen wird), hat irgendjemand Glück mit anderen Ansätzen gehabt, dieses Problem zu lösen?

    
Matt 20.04.2011, 00:52
quelle

1 Antwort

0

Wir hatten ein ähnliches Problem, und obwohl es nicht so sauber ist wie das Ausführen der Junit-Aufgabe, ist es nicht besonders schwer zu lösen. Wir haben eine Klasse mit einem main () erstellt, die einfach den Junit4Runner aufruft. Es fügt einen RunListener hinzu, der versucht, die Ausgabe des Junit-Berichts in XML auszugeben. Die Idee war, dass sich das Datenformat viel weniger ändert als der Runner, also weniger spröde.

Ich habe eine ganze Menge umweltspezifischen Code entfernt, aber das ist die Grundidee. Unser test Ziel in Ameisen sieht so aus:

%Vor%

Sie können den Code für die Runner-Klasse hier anzeigen. Es ist unabhängig von Java 6 SE und Junit 4.8 und kann mit Java 5 SE kompatibel sein.

    
ahawtho 17.02.2012, 17:35
quelle

Tags und Links