2010-11-26 13 views
3

J'essaie d'exécuter une tâche JUnit 4.8.1 dans Ant 1.7.1. Mon IDE est Eclipse Helios. Je me suis cogné la tête contre un mur de briques pendant 2 jours et je n'arrive pas à comprendre. Je suis sûr qu'en lisant d'autres articles c'est un problème de classpath, mais je ne peux pas voir où je vais mal.La tâche Ant JUnit n'a pas pu trouver junit/framework/TestCase.class

suite de tests Mon junit4 est défini comme suit:

package mypackage.tests; 

import org.junit.runner.RunWith; 
import org.junit.runners.Suite; 

/** 
* JUnit 4 Test Suite for the entire <code>mypackage</code> 
* package 
*/ 
@RunWith(Suite.class) 
@Suite.SuiteClasses({ mypackage.tests.controller.AllTests.class }) 
public class AllTests { 
} 

... assez simple, mais le test échoue avec un ClassNotFoundException

java.lang.ClassNotFoundException: mypackage.tests.AllTests 
at java.net.URLClassLoader$1.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Unknown Source) 

Lorsque je passe sur le drapeau de débogage, je reçois la trace suivante de Ant:

(...) 
[junit] Couldn't find junit/framework/TestCase.class 
[junit] Found C:\eclipse\plugins\org.apache.ant_1.7.1.v20100518-1145\lib\ant-launcher.jar 
[junit] Found C:\eclipse\plugins\org.apache.ant_1.7.1.v20100518-1145\lib\ant.jar 
[junit] Found C:\eclipse\plugins\org.apache.ant_1.7.1.v20100518-1145\lib\ant-junit.jar 
fileset: Setup scanner in dir C:\eclipse\plugins with patternSet{ includes: [org.junit_4.8.1.v4_8_1_v20100427-1100/junit.jar] excludes: [] } 
Finding class junit.framework.Test 
Loaded from C:\eclipse\plugins\org.junit_4.8.1.v4_8_1_v20100427-1100\junit.jar junit/framework/Test.class 
(...) 

De toute évidence, le jar JUnit est sur le chemin de classe, et o D'autres classes telles que Test.class sont en train d'être récupérées, alors pourquoi ai-je le message 'could Test find TestClass.class'?

J'essayé d'ajouter le junit.jar à la fourmi classpath dans l'interface graphique Eclipse, et cela a l'effet suivant: quelqu'un

(...) 
[junit] Found C:\eclipse\plugins\org.junit_4.8.1.v4_8_1_v20100427-1100\junit.jar 
[junit] Found C:\eclipse\plugins\org.apache.ant_1.7.1.v20100518-1145\lib\ant-launcher.jar 
[junit] Found C:\eclipse\plugins\org.apache.ant_1.7.1.v20100518-1145\lib\ant.jar 
[junit] Found C:\eclipse\plugins\org.apache.ant_1.7.1.v20100518-1145\lib\ant-junit.jar 
(...) 
[junit] WARNING: multiple versions of ant detected in path for junit 
[junit]   jar:file:C:/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/lib/ant.jar!/org/apache/tools/ant/Project.class 
[junit]  and jar:file:/C:/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/lib/ant.jar!/org/apache/tools/ant/Project.class 
(...) 

Peut-s'il vous plaît aidez-moi s'il vous plaît s'il vous plaît pour obtenir ce travail! Oh, j'ai presque oublié ... la suite de tests tourne bien depuis Eclipse.

Merci d'avance!

Répondre

2

L'erreur est due au fait que vos classes de test ne peuvent pas être chargées.

Avez-vous placé le package mypackage.tests.controller (c'est-à-dire le ou les dossiers contenant les fichiers de classe ou l'archive jar) sur le chemin de classe de votre appel junit? Cela peut être fait en utilisant une structure de chemin de classe imbriquée. (http://ant.apache.org/manual/Tasks/junit.html).

+0

OMG, je pourrais pleurer. Deux jours pour ça! C'était précisément le problème. Je ne pouvais pas comprendre comment ajouter les fichiers de classe seulement, donc j'ai inclus une tâche et ajouté le fichier jar au classpath. – user391549