Wie Testfälle auf einer Liste von leicht verschiedenen Gläsern laufen?
Frage
Ich habe eine Liste von JAR-Dateien, die alle leicht unterschiedliche Versionen des gleichen Systems enthalten.
Ich möchte eine Reihe von Testfällen auf jeder JAR-Datei auszuführen, während die Ergebnisse für jedes Glas erhalten zu können (über RunListener oder so ähnlich).
Ich bin ein bisschen mit den Klassenladeprobleme verwirrt, die impliziert sind.
Wie kann ich das gut tun?
Lösung
Wenn Sie ant verwenden, die JUnit Aufgabe nimmt einen Classpath.
<target name="test">
<junit ...">
<classpath>
<pathelement path="${test.jar.path}" />
</classpath>
...
</junit>
</target>
Sie kann die antcall Aufgabe verwenden, um Ihr Testziel mit einem unterschiedlich Wert für die test.jar.path Eigenschaft wiederholt zu nennen.
Andere Tipps
Wenn die Gläser die gleiche Schnittstelle halten, dann alles, was Sie tun müssen, ist jeden Test mit einem slighly verschiedenen Classpath laufen -. Jedes Mal mit Gläsern aus einer anderen Version
Wenn Sie Eclipse-JUnit-Integration verwenden, nur N Run-Konfigurationen erstellen, in jedem in den Classpath-Registern erforderlich Gläser angeben.
Wenn Sie es programmatisch tun wollen, dann empfehle ich Ihnen mit leeren Classpath starten und verwenden URLClassLoader , ihm einen anderen Satz von Gläsern jedes Mal geben.
So etwas wie folgt aus:
URLClassloader ucl = new URLClassLoader( list of jars from version1 );
TestCase tc = ucl.loadClass("Your Test Case").newInstance();
tc.runTest();
ucl = new URLClassLoader( list of jars from version2 );
TestCase tc = ucl.loadClass("Your Test Case").newInstance();
tc.runTest();