当前位置: 首页 > 知识库问答 >
问题:

SpockSpring模块在运行测试时会导致NoSuchMultiodError

佴涵蓄
2023-03-14

我使用以下spock依赖项

 <dependency>
        <groupId>org.spockframework</groupId>
        <artifactId>spock-core</artifactId>
        <version>1.0-groovy-2.4</version>
        <scope>test</scope>
 </dependency>

我写了这个测试

class JsonIncludeResolverTest extends Specification {
    JsonIncludeResolver uut;
    def "test"(){
       expect:
       true
    }
}

测试成功

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

我在这里阅读了关于spum-spock:如何将Spring bean注入spock测试

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

<dependency>
      <groupId>org.spockframework</groupId>
      <artifactId>spock-spring</artifactId>
      <version>1.1-groovy-2.4</version>
      <scope>test</scope>
</dependency>

在添加了运行s的依赖后

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)

然后我尝试使用适当的注释

@ContextConfiguration
class JsonIncludeResolverTest extends Specification {
    @Autowired
    JsonIncludeResolver uut;
    def "test"(){
       expect:
       uut != null
    }
}

结果仍然是上述例外。

groovy测试在/src/test/groovy下,这是一个可以在第一次成功运行测试时看到的工作环境。

共有1个答案

翟博雅
2023-03-14

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

 <dependency>
        <groupId>org.spockframework</groupId>
        <artifactId>spock-core</artifactId>
        <version>1.1-groovy-2.4</version>
        <scope>test</scope>
 </dependency>

org。spockframework。util。反射直到。isAnnotationPresentRecursive()自1.1版起通过此提交引入。

 类似资料:
  • 问题内容: 将模块插入项目后,如何在该模块中运行测试用例? 即我做了: 然后尝试测试其中的内容: 我们是否应该单独检查模块并进行测试?我不知道该怎么办。看来,当我知道如何找到已获取的模块时,但是当我使用它时,它在路径中“找不到”。 问题答案: 需要包,而不是相对于的文件夹。 因此,省略开头和结尾的文件名,它将起作用: 如果当前目录是您要测试的软件包文件夹,您甚至可以忽略它,例如 作为参考,请参阅C

  • 摘要:从正在运行的Java程序加载jar会导致由类间依赖(例如语句)引起的引起的。我如何绕过它? 更详细的问题是: 我试图通过自己的Java程序将jar文件(我们称之为“服务器”)以编程方式加载到Java虚拟机中(我们称之为“ServerAPI”),并使用扩展和其他一些技巧来修改服务器的行为并与之交互。ServerAPI依赖于服务器,但如果服务器不存在,ServerAPI仍然必须能够从网站上运行和

  • 我们刚刚从Visual Studio2008“升级”到Visual Studio2012。我们更新了我们的单元测试,现在它们在单独运行时通过,但是当我尝试运行全部时,我得到了以下错误: 还有人遇到过类似的问题吗?如果是的话,你是怎么解决的? 在MSDN上也问过同样的问题,但答案是“点击崩溃转储的链接”。这个答案对我没有帮助,因为我没有看到到崩溃转储的任何链接,并且我无法生成崩溃转储。 关于Stac

  • 问题内容: 我有一个仅在设置位标志时才运行的测试文件。我遵循了golang的测试文档中的一个简单示例: 如果我运行,它将按预期运行。但是,当我运行时,所有其他包测试均失败: 我希望能够运行所有测试,而不必担心在每个测试文件中解析此标志。有没有办法做到我所缺少的? 问题答案: 运行时,它会以相同的参数 将 每个程序包 作为单独的可执行文件 运行测试。因此,如果要向每个程序包传递一个标志,则每个程序包

  • 我在mvn中有以下结构。 模块A是所有后续模块(B、C、...)继承的模块。该模块具有通用功能和jUnit/联调用例。它不是Web应用程序。 模块B是一个web应用程序。它依赖于模块B。 模块C是一个web应用程序。它依赖于模块B。 我们的Jersey rest/api代码位于模块A中。通过这种方式,无论我们部署什么模块,我们都可以访问rest/api。 到目前为止,我已经成功地在模块C中配置了M

  • 问题内容: 尝试使用gdb调试程序时,它无法在OPENSSL_cpuid_setup中报告SIGILL。 有了这个简单的代码,我的行为与: 它可以编译并运行良好,但是从回溯之后的gdb报告开始 如何在gdb下运行这样的程序? 问题答案: SSL_library_init在gdb下运行时会导致SIGILL … 实际上,它一直都在执行,而不仅仅是在GDB下。当库测试处理器功能时,这是启动代码中的正常行