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?

War es hilfreich?

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();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top