2009-01-07 7 views
0

J'ai une liste de fichiers jar, tous contenant des versions légèrement différentes du même système. Je veux exécuter un ensemble de cas de test sur chaque fichier JAR tout en étant capable d'obtenir les résultats pour chaque pot (via RunListener ou quelque chose comme ça). Je suis un peu confus avec les problèmes de chargement de classe qui sont implicites.Comment exécuter des cas de test sur une liste de pots légèrement différents?

Comment puis-je bien faire cela?

Répondre

2

Si vous utilisez fourmi, la tâche JUnit prend un chemin de classe.

<target name="test"> 
    <junit ..."> 
    <classpath> 
     <pathelement path="${test.jar.path}" /> 
    </classpath> 
    ... 
    </junit> 
</target> 

Vous pouvez utiliser la tâche antcall d'appeler votre cible de test à plusieurs reprises avec une valeur pour la propriété différée de test.jar.path.

0

Si les jars conservent la même interface, il vous suffit d'exécuter chaque test avec un chemin de classe légèrement différent - chaque fois avec des jarres d'une autre version. Si vous utilisez l'intégration Eclipse JUnit, créez simplement N configurations d'exécution, dans chacune d'entre elles, dans l'onglet Classpath, spécifiez les jars requis.

Si vous voulez le faire par programme, alors je vous suggère de commencer avec un chemin de classe vide et d'utiliser URLClassLoader, en lui donnant un ensemble différent de pots à chaque fois.

Quelque chose comme ceci:

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(); 
Questions connexes