我有一个带有单元测试的项目。我正在使用 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 已签名,因此测试失败。我怎样才能摆脱这两个条目?或者我如何确保它们被添加到类路径的后期(即在我的 JUnit + Hamcrest 版本之后)?