首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在运行测试时,Spock spring模块将生成NoSuchMethodError。

在运行测试时,Spock spring模块将生成NoSuchMethodError。
EN

Stack Overflow用户
提问于 2018-06-06 06:11:35
回答 1查看 1.8K关注 0票数 1

我使用以下spock依赖项

代码语言:javascript
复制
 <dependency>
        <groupId>org.spockframework</groupId>
        <artifactId>spock-core</artifactId>
        <version>1.0-groovy-2.4</version>
        <scope>test</scope>
 </dependency>

我写了这个测试

代码语言:javascript
复制
class JsonIncludeResolverTest extends Specification {
    JsonIncludeResolver uut;
    def "test"(){
       expect:
       true
    }
}

试验成功

现在,我想使用Spring在规范中注入JsonIncludeResolverJsonIncludeResolver使用@Component注释,并在运行应用程序时成功注入。测试和组件都放在同一个maven模块中。

我在这里读到了spring-spock的故事:如何在spock测试中注入春豆

因此,我添加了这个依赖版本。

代码语言:javascript
复制
<dependency>
      <groupId>org.spockframework</groupId>
      <artifactId>spock-spring</artifactId>
      <version>1.1-groovy-2.4</version>
      <scope>test</scope>
</dependency>

在添加此依赖项之后,运行

代码语言:javascript
复制
Exception in thread "main" java.lang.NoSuchMethodError: org.spockframework.util.ReflectionUtil.isAnnotationPresentRecursive(Ljava/lang/Class;Ljava/lang/Class;)Z
at org.spockframework.spring.SpringExtension.isSpringSpec(SpringExtension.java:83)
at org.spockframework.spring.SpringExtension.visitSpec(SpringExtension.java:59)
at org.spockframework.runtime.ExtensionRunner.runGlobalExtensions(ExtensionRunner.java:46)
at org.spockframework.runtime.ExtensionRunner.run(ExtensionRunner.java:40)
at org.spockframework.runtime.Sputnik.runExtensionsIfNecessary(Sputnik.java:88)
at org.spockframework.runtime.Sputnik.getDescription(Sputnik.java:55)
at com.intellij.junit4.JUnit4IdeaTestRunner.getDescription(JUnit4IdeaTestRunner.java:78)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:50)
at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)

然后,我尝试使用正确的注释。

代码语言:javascript
复制
@ContextConfiguration
class JsonIncludeResolverTest extends Specification {
    @Autowired
    JsonIncludeResolver uut;
    def "test"(){
       expect:
       uut != null
    }
}

结果仍然是上述例外。

groovy测试是在/src/test/groovy下进行的,正如您在测试的第一次成功运行中所看到的那样。

EN

回答 1

Stack Overflow用户

发布于 2018-06-08 07:27:22

尝试将Spock升级到1.1,如下所示:

代码语言:javascript
复制
 <dependency>
        <groupId>org.spockframework</groupId>
        <artifactId>spock-core</artifactId>
        <version>1.1-groovy-2.4</version>
        <scope>test</scope>
 </dependency>

自1.1版以来,org.spockframework.util.ReflectionUtil.isAnnotationPresentRecursive()就由此承诺推出。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50713270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档