java.lang.NoClassDefFoundError:组织/ junit的/在内部/ AssumptionViolatedException在org.spockframework.runtime.JUnitSupervisor.error(JUnitSupervisor.java:92)在org.spockframework.runtime.BaseSpecRunner.invokeRaw(BaseSpecRunner.java:318)有机.spockframework.runtime.BaseSpecRunner.invoke(BaseSpecRunner.java:297)在org.spockframework.runtime.BaseSpecRunner.runSpec(BaseSpecRunner.java:90)在org.spockframework.runtime.BaseSpecRunner.run(BaseSpecRunner.java:81)在org.spockframework.runtime.Sputnik.run(Sputnik.java:63)在org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)在org.eclipse.jdt.internal.junit . runner.TestExecution.run在org.eclipse.jdt.internal.junit.runner.RemoteTestRunner(TestExecution.java:38)在org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) . runTests(RemoteTestRunner.java:683)位于org.eclipse.jdt.int的org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) ernal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
我有一个调用方法的简单测试用例,
def 'some test for empty Lists'(){
setup:
List<Object> clauses=new ArrayList<Object>()
when:
String someString=builder.buildString(clauses, "someName", "AND");
then:
noExceptionThrown()
someString==""
}
假设通过 spring 注入助洗剂 . 我无法弄清楚为什么会这样 . 它仅适用于少数测试用例 .
任何帮助非常感谢:) I use spock 0.6 with groovy 1.8.
3 回答
我使用带有以下版本的简单Eclipse java项目进行spock测试时遇到了同样的错误:
spock-core-1.0-groovy-2.3
junit-4.12
只有在测试失败时才抛出异常,但是对于成功的测试失败了
我发现它是Junit版本的兼容性问题 . 我使用junit-4.7解决了它,并测试了以下版本:
junit-4.6 =>好的
junit-4.5 =>好的
junit-4.4 => ko
junit-4.0 => ko
希望能帮助到你
尝试在
STS:3.6.4
和JBoss Developer Studio版本中运行我的spocks时遇到了相同的兼容性问题:7.1.1.GA
.使用
junit-4.7
而不是junit-4.12
解决了问题其他说明可在https://code.google.com/p/spock/wiki/GettingStarted#Eclipse找到
使用jUnit 4.12的spock 1.0的解决方案
一旦我将 hamcrest-core-1.3 添加到我的测试类路径中,错误就消失了 .
问题是什么?
我观察到了问题中描述的相同错误,但我设法让 spock 1.0 groovy 2.4 与 junit-4.12 一起工作 .
问题是 junit-4.12 取决于 hamcrest . 实际上
org.junit.internal.AssumptionViolatedException
实现了interface
org.hamcrest.SelfDescribing
.