我正在处理一个项目,该项目的依赖关系为JUnit 4.11
,而JMock 2.6.0-RC2
的传递依赖关系依赖于JUnit-dep 4.4
。 JUnit-dep
的这种传递依赖性覆盖了JUnit
的本地pom中的设置。通过重写,我的意思是当我调用JUnit方法时,它调用v4.4中的一个而不是v4.11。为JMock
和JUnit-dep
添加排除对我已解决的依赖项没有影响。
注意: JUnit
和JUnit-dep
分别有artifactId
个,因此使用一个不会忽略另一个。
上一个问题:JUnit注释无法正常工作
我正在尝试使用JUnit的ExpectedException
规则运行测试但是当我运行测试时,似乎规则没有运行。在下面的代码中,异常直接通过并且未通过测试,因为如果规则不在那里,人们会期望。
我最近将项目的Maven依赖项从4.3.1更改为4.11。我也做了一个干净的工作区。我应该采取哪些步骤来解决这个问题?来自Maven的传统依赖会让跑步者感到困惑吗?我怎么能告诉我我在运行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选项卡时,我为JUnit提供了1 Resolved Dependency :4.11和多个(因为与4.11冲突而被忽略)的版本剩下。此外,来自jmock-junit4: 2.6.0-RC2
的junit-dep 4.4还有已解决的依赖关系但是我已将此依赖关系标记为已排除(Right-click + Exclude Maven Artifact...
)。此外,由于与我自己调用JMock 2.1.0
的冲突,JMock本身被标记为ommited。
修改
Ctrl+Shift+T RunWith
显示了2个版本,4.4&amp; 4.11尽管有例外情况。
修改
添加junit-dep 4.10
“依赖”“修复”问题,最后省略制作4.4版本的麻烦。然而,这似乎更像是一种破解而非解决方案。
答案 0 :(得分:0)
看起来你的构建路径上仍然有JUnit 4.3(或者至少是4.5之前的版本)。有关详细信息,请参阅NoSuchFieldError when trying to run a jUnit test with Spring。