J'ai un projet avec des tests unitaires. J'utilise Maven et m2e. Avec Maven de la ligne de commande, je vois:Comment se débarrasser de org.hamcrest.core_1.1.0.v20090501071000.jar?
[INFO] | +- org.springframework:spring-test:jar:3.1.3.RELEASE:test
[INFO] | \- junit:junit-dep:jar:4.10:test
[INFO] +- org.mockito:mockito-core:jar:1.9.0:test
[INFO] | +- org.hamcrest:hamcrest-core:jar:1.2.1:test
[INFO] | \- org.objenesis:objenesis:jar:1.0:test
mvn install
travaux, tous les tests exécutés. Bien.
Maintenant, je tente d'exécuter les tests unitaires à partir d'Eclipse en utilisant M2e 1.2.0 et je reçois cette erreur:
java.lang.SecurityException: class "org.hamcrest.DiagnosingMatcher"'s signer information does not match signer information of other classes in the same package
at java.lang.ClassLoader.checkCerts(ClassLoader.java:806)
at java.lang.ClassLoader.preDefineClass(ClassLoader.java:487)
...
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
qui me déconcerte. L'arbre de dépendance dans m2e semble bon. Mais quand j'ouvre les propriétés du processus, je reçois un classpath modifié qui contient ces entrées supplémentaires:
.../eclipse/3.7.2/eclipse/plugins/org.junit_4.8.2.v4_8_2_v20110321-1705/junit.jar
.../eclipse/plugins/org.hamcrest.core_1.1.0.v20090501071000.jar
Depuis ces fichiers JAR sont signés, les tests échouent. Comment puis-je me débarrasser de ces deux entrées? Ou comment puis-je m'assurer qu'ils sont ajoutés tard dans le classpath (c'est-à-dire après ma version de JUnit + Hamcrest)?
1. Junit est pas sur la Java Build Path 2. J'utilise 'junit-dep' qui n'inclut aucune classe Hamcrest.Le problème est que le lanceur jdt Junit semble ajouter JUnit et Hamcrest au classpath (et aux anciennes versions, aussi) mais je ne sais pas trop comment l'éviter. –