単体テストを含むプロジェクトがあります。私はMavenとm2eを使用しています。コマンドラインからMavenを使用すると、次のことがわかります。
[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
動作し、すべてのテストが実行されます。良い。
ここで、m2e 1.2.0 を使用して Eclipse 内から単体テストを実行しようとすると、次のエラーが発生します。
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)
それは私を困惑させます。m2e の依存関係ツリーは良さそうです。しかし、プロセスのプロパティを開くと、次の追加エントリを含む変更されたクラスパスが表示されます。
.../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
これらの JAR は署名されているため、テストは失敗します。この 2 つのエントリを削除するにはどうすればよいですか? または、それらがクラスパスの後半 (つまり、私のバージョンの JUnit + Hamcrest の後) に追加されていることを確認するにはどうすればよいですか?