La configuration de fourmi pour exécuter les tests unitaires. Où dois-bibliothèques être? Comment doit-classpath être configuré? en évitant ZipException
Je suis en train de lancer mon junit tests à l'aide d'ant. Les tests sont des coups de pied à l'aide d'une suite de tests JUnit 4. Si je l'exécute directement à partir d'Eclipse. les tests complète sans erreur. Cependant, si je le lance à partir de fourmi nombre de ces tests échoue avec cette erreur répétée encore et encore jusqu'à ce que la junit tâche se bloque.
[junit] java.util.zip.ZipException: erreur dans l'ouverture de fichier zip [junit] à java.util.zip.ZipFile.ouvert(Native method) [junit] à java.util.zip.ZipFile.(ZipFile.java:114) [junit] à java.util.zip.ZipFile.(ZipFile.java:131) [junit] au org.apache.outils.ant.AntClassLoader.getResourceURL(AntClassLoader.java:1028) [junit] au org.apache.outils.ant.AntClassLoader$ResourceEnumeration.findNextResource(AntClassLoader.java:147) [junit] au org.apache.outils.ant.AntClassLoader$ResourceEnumeration.nextElement(AntClassLoader.java:130) [junit] au org.apache.outils.ant.util.CollectionUtils$CompoundEnumeration.nextElement(CollectionUtils.java:198) [junit] au soleil.misc.CompoundEnumeration.nextElement(CompoundEnumeration.java:43) [junit] au org.apache.outils.ant.taskdefs.facultatif.junit.JUnitTask.checkForkedPath(JUnitTask.java:1128) [junit] au org.apache.outils.ant.taskdefs.facultatif.junit.JUnitTask.executeAsForked(JUnitTask.java:1013) [junit] au org.apache.outils.ant.taskdefs.facultatif.junit.JUnitTask.execute(JUnitTask.java:834) [junit] au org.apache.outils.ant.taskdefs.facultatif.junit.JUnitTask.executeOrQueue(JUnitTask.java:1785) [junit] au org.apache.outils.ant.taskdefs.facultatif.junit.JUnitTask.execute(JUnitTask.java:785) [junit] au org.apache.outils.ant.UnknownElement.execute(UnknownElement.java:288) [junit] au soleil.de réfléchir.GeneratedMethodAccessor1.invoke(Source Inconnue) [junit] au soleil.de réfléchir.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [junit] à java.lang.de réfléchir.La méthode.invoke(la Méthode.java:597) [junit] au org.apache.outils.ant.de l'expédition.DispatchUtils.execute(DispatchUtils.java:106) [junit] au org.apache.outils.ant.De la tâche.effectuer(Tâche.java:348) [junit] au org.apache.outils.ant.Cible.execute(la Cible.java:357) [junit] au org.apache.outils.ant.Cible.performTasks(la Cible.java:385) [junit] au org.apache.outils.ant.Projet.executeSortedTargets(du Projet.java:1337) [junit] au org.apache.outils.ant.Projet.executeTarget(du Projet.java:1306) [junit] au org.apache.outils.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41) [junit] au org.apache.outils.ant.Projet.executeTargets(du Projet.java:1189) [junit] au org.apache.outils.ant.Principal.runBuild(Principale.java:758) [junit] au org.apache.outils.ant.Principal.startAnt(Principale.java:217) [junit] au org.apache.outils.ant.de lancement.Lanceur.exécuter(Lanceur.java:257) [junit] au org.apache.outils.ant.de lancement.Lanceur.principale(Lanceur.java:104)
mon test de la tâche en cours d'exécution est comme suit:
<nom de la cible="run-junit-tests" depends="compilation des tests,nettoyez-les résultats"> <mkdir dir="${test.résultats.dir}"/> <junit failureproperty="tests.échec de la" fourche="true" showoutput="oui" includeantruntime="false"> <classpath refid="test.exécuter.chemin" /> <module de formatage type="xml" /> <test name="projet.AllTests" todir="${basedir}/test-résultats" /> </junit> <échouer si="tests.le message" echec="tests Unitaires échec"/> </target>
J'ai vérifié que le classpath contient les éléments suivants ainsi que tout le code du programme et des bibliothèques:
ant-junit.jar ant-launcher.jar ant.jar easymock.jar easymockclassextension.jar junit-4.4.jar
J'ai essayé de débogage pour savoir qui ZipFile c'est en essayant de l'ouvrir avec pas de chance, j'ai essayé de basculement includeantruntime et fork et j'ai essayé de courir ant avec ant -lib test/libs où test/libs contient la fourmi et junit bibliothèques.
Aucune info sur ce que sont les causes de cette exception ou de la façon dont vous avez configuré ant à exécuter avec succès les tests unitaires est reçu avec gratitude.
ant 1.7.1 (ubuntu), java 1.6.0_10, junit 4.4
Grâce.
Mise À Jour - Correction D'
Trouvé mon problème. J'avais compris mon répertoire classes dans mon chemin à l'aide d'un fileset par opposition à un pathelement c'était à l'origine .les fichiers de classe pour être ouvert en tant que ZipFiles qui, évidemment, a déclenché une exception.
Vous devez vous connecter pour publier un commentaire.
Trouvé mon problème. J'avais compris mon répertoire classes dans mon chemin à l'aide d'un fileset contrairement à un pathelement c'était à l'origine .les fichiers de classe pour être ouvert en tant que ZipFiles qui, évidemment, a déclenché une exception.
Cette erreur est due, précisément parce que le chemin de classe contient des références explicites à un ou à plusieurs [fichiers] qui ne sont pas JAR de. La référence à la "erreur dans l'ouverture de fichier zip" est bien sûr qu'un POT est en effet un fichier ZIP alors que d'autres fichiers [JUNIT] a trouvé comme les fichiers de classe sont pas et en tant que tels n'ont pas de format zip. Donc, le chemin de classe doit contenir uniquement les références explicites à des JAR [fichiers] et/ou le nom de l' [répertoires] où d'autres ressources telles que des fichiers de classe sont à trouver.
Donc, lorsque la construction de votre chemin de classe (FOURMI) utilisation:
où
ou
REMARQUE: Lors de l'utilisation de cartes sauvages comme
[**/*]
dans vous devez vous assurer que le joker n'est pas l'appariement des fichiers qui ne sont pas des fichiers JARIl sonne comme il y est un problème avec les chemins d'accès.
Vérification d'erreur suivant source:
Plus d'information contribuerait à aider 🙂
Bonne chance!
Merci les gars pour cette information. Je veux juste ajouter un peu de la pointe de mon expérience. J'ai le même problème avec junit que vous quand junit tryes pour ouvrir de licence*.les fichiers txt dans le dossier lib où *.jar réside.(Lierre résoudre processus met ici) Donc
aide aussi.
Si vous utilisez Ubuntu ou Debian, cela fera JUnit (et quelques autres libs) toujours disponible pour Ant: