使用ant脚本运行测试代码时出错。但是如果我通过 RUN AS - >分别使用eclipse运行testMethods。 JUNIT ,它会返回正确的答案。
java.lang.NoSuchMethodError: org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runLeaf(Lorg/junit/runners/model/Statement;Lorg/junit/runner/Description;Lorg/junit/runner/notification/RunNotifier;)V
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:252)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:94)
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191)
我正在使用 junit:4.12 和 spring-test:4.3.16.RELEASE 库。我已经搜索了解决方案但是每个解决方案都给我回答使用大于 junit:11 的junit版本。但我使用4.12但仍然出错。
答案 0 :(得分:1)
问题是由pom依赖性引起的。无论您更改junit版本如何都行不通,因为在加载您在POM中明确定义的Junit依赖项之前,还有其他pom依赖项间接引入了旧的junit版本。要看到这一点,请输入SpringJUnit4ClassRunner类,然后输入其超类BlockJUnit4ClassRunner,您会发现它不位于您在POM中声明的junit jar包中。
因此,要解决此问题,您应该找出哪种pom依赖关系通过以下方式间接引入了您在第1段中找到的jar包: mvndependency:tree ,然后使用 exclusion 将其排除在相应的pom依赖项中,例如:
<ul class="waste">
<li id="waste_1" class="paper"></li>
<li id="waste_2" class="bio"></li>
</ul>
<div class="trashcan">
<div id="bio" class="bio"></div>
<div id="paper" class="paper"></div>
</div>
现在,它应该可以正常工作了! (如果不需要,则可能需要 mvn全新安装)