2013-03-02 5 views
1

Je suis un débutant avec Ant mais j'ai un problème lorsque je tente d'utiliser JUnit:Java Ant Erreur: ClassNotFoundException

<target name="test" depends="compile" description="JUnit Tests"> 
    <junit printsummary="yes" failureproperty="junit.failure" fork="yes"> 
     <classpath refid="junit.classpath"/> 
     <classpath path="${myAntTestBin.dir}"/> 
     <formatter type="plain" usefile="false"/> 
     <test name="fr.isima.myAntTest.ProjectTest"/> 
    </junit> 
</target> 

Mais maintenant, je ces erreurs:

test: 
    [junit] Running fr.isima.myAntTest.ProjectTest 
    [junit] Testsuite: fr.isima.myAntTest.ProjectTest 
    [junit] Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0 sec 
    [junit] Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0 sec 
    [junit] 
    [junit]  Caused an ERROR 
    [junit] fr.isima.myAntTest.ProjectTest 
    [junit] java.lang.ClassNotFoundException: fr.isima.myAntTest.ProjectTest 
    [junit]  at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    [junit]  at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    [junit]  at java.security.AccessController.doPrivileged(Native Method) 
    [junit]  at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    [junit]  at java.lang.ClassLoader.loadClass(ClassLoader.java:423) 
    [junit]  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 

    [junit]  at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
    [junit]  at java.lang.Class.forName0(Native Method) 
    [junit]  at java.lang.Class.forName(Class.java:186) 
    [junit] 
    [junit] Test fr.isima.myAntTest.ProjectTest FAILED 

Qu'est-ce que c'est le problème ? Merci d'avance!

Répondre

1

Je soupçonne que c'est le problème:

<test name="${myAntTestBin}/ProjectTest.class"/> 

Il cherche le nom de la classe, pas l'emplacement:

<test name="ProjectTest"/> 

... avec un nom de package qualifiant le cas échéant (que vous devriez vraiment avoir, bien sûr). Ainsi, par exemple:

<test name="foo.bar.ProjectTest" /> 

Et aussi, comme JB Nizet mentionne ceci:

<classpath path="${myAntTestBin}"/> 

devrait être:

<classpath path="${myAntTestBin.dir}"/> 

pour correspondre à votre déclaration:

<property name="myAntTestBin.dir" value="../myAntTest/bin/fr/isima/myAntTest"/> 

EDIT: Maintenant que vous avez modifié la question (complètement) il semble que vous avez le mal classpath, et il devrait en fait être:

<property name="myAntTestBin.dir" value="../myAntTest/bin"/> 

Le chemin de classe doit être la base de la structure de répertoire contenant Vos classes. Ceci est tout comme en Java normal lorsque vous lancerez la:

java -cp bin foo.bar.Baz 

si vous aviez une structure de répertoire de bin/foo/bar contenant Baz.class.

+0

Merci, j'ai changé le classpath avec le nom du paquet comme vous l'avez dit mais il y a encore quelques erreurs (j'ai édité ma question). – bryan63

+0

@ bryan63: Vous avez maintenant rendu cette réponse complètement stupide car elle ne reflète pas votre question du tout. Il aurait mieux valu * ajouter * à votre question plutôt que de se débarrasser de la première version. Cependant, il semble que votre chemin de classe est erroné - éditera la réponse pour expliquer. –

+0

Merci, la classe est trouvée, mais maintenant le problème est que mes tests utilisent des classes d'un paquet différent: mon test de classe est dans: "fr.isima.myAntTest" et les autres classes sont dans: "fr.isima.MyAnt2 ". C'est en fait 2 projets différents, comment joindre ces paquets pour faire mes tests? – bryan63

Questions connexes