我正在开发一个项目,该项目具有依赖关系JUnit 4.11
和传递依赖关系,JMock 2.6.0-RC2
而后者又依赖于JUnit-dep 4.4
. 的这种传递依赖JUnit-dep
覆盖了我本地 pom for 中的设置JUnit
。通过覆盖,我的意思是当我调用 JUnit 方法时,它会调用 v4.4 中的方法,而不是 v4.11。JMock
添加 for和 for 的排除项JUnit-dep
对我已解决的依赖项没有影响。
注意: JUnit
andJUnit-dep
有单独artifactId
的 s,因此使用一个不会省略另一个。
上一个问题:JUnit 注释不起作用
我正在尝试使用 JUnit 的ExpectedException
规则运行测试,但是当我运行测试时,似乎规则没有运行。在下面的代码中,如果规则不存在,异常会直接通过并未能通过测试。
我最近将项目的 Maven 依赖项从 4.3.1 更改为 4.11。我还对我的工作区做了一个干净的构建。我应该采取哪些步骤来解决这个问题?来自 Maven 的 trasitive 依赖项会让跑步者感到困惑吗?我怎么能说我正在使用 4.11 运行?
@Rule
public ExpectedException thrown= ExpectedException.none();
@Test
public void throwsNullPointerException() {
thrown.expect(NullPointerException.class);
throw new NullPointerException();
}
编辑:
我不知道这是否有帮助,但@RunWith(BlockJUnit4ClassRunner.class)
在我的班级中名列前茅让我得到了这个:
java.lang.NoSuchFieldError: NULL
at org.junit.runners.ParentRunner.<init>(ParentRunner.java:57)
at org.junit.runners.BlockJUnit4ClassRunner.<init>(BlockJUnit4ClassRunner.java:57)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.junit.internal.requests.ClassRequest.buildRunner(ClassRequest.java:33)
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:28)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.<init>(JUnit4TestReference.java:32)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.<init>(JUnit4TestClassReference.java:25)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:41)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:31)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452)
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)
编辑:
在 Eclipse 中通过 m2e 查看依赖项:当我检查我的 pom 的 Dependency Hierarchy 选项卡时,我在左侧显示 1 Resolved Dependency for JUnit:4.11 和多个(与 4.11 冲突省略)版本。此外,junit-dep 4.4还有一个已解决的依赖关系,jmock-junit4: 2.6.0-RC2
但是我已将此依赖关系标记为已排除(Right-click + Exclude Maven Artifact...
)。此外,由于与我自己对JMock 2.1.0
.
编辑:
Ctrl+Shift+T RunWith
尽管有排除,但显示 2 个版本,4.4 和 4.11。
编辑:
添加junit-dep 4.10
“修复”问题的依赖项,最后省略了制作 4.4 版本的麻烦。然而,这似乎更像是一种破解而不是解决方案。