【问题标题】:Difficulty running grails tests in IntelliJ : Illegal use of nonvirtual function call在 IntelliJ 中难以运行 grails 测试:非法使用非虚拟函数调用
【发布时间】:2014-01-07 16:24:00
【问题描述】:

最近我一直在尝试在 IntelliJ 中运行我的 spock 测试(它曾经运行良好,并且在故障功能上进行了很好的调试/特定测试重新运行),在过去的几个月里,我开始收到以下错误:

| Error Error executing script TestApp: 
 (class: com/company/MyServiceSpec, method: super$2$oldImpl signature:
 (Ljava/lang/Object;)Ljava/lang/Object;) 
 Illegal use of nonvirtual function call (Use --stacktrace to see the full trace)

这是一个 spock 测试,可以从命令行单独(通过指定类)或在整个测试应用程序系列中正常运行。我在这个项目中进行的几乎所有 spock 和普通的旧单元或集成测试在 IntelliJ 中都出现了类似的失败。

我尝试过使用测试的运行功能(打开或关闭类路径、运行单个方法、整个测试类或整个测试系列),但没有运气来纠正这种情况。我还做了一个grails clean 并尝试从 IntelliJ 重新运行它们:看起来好像它工作过一次,我能够运行测试一段时间,但在做了一些工作后很快问题仍然存在。

我知道这是一个有点模糊的问题,但是有没有人遇到过类似的故障并找到了可靠的补救措施?我在 Grails 2.1 和 Spock 0.7 上,在 IntelliJ 12 和 13 中都存在同样的问题

【问题讨论】:

  • 您是否有可能通过 IntelliJ 使用未针对这些类编译的不同 grails/groovy 版本运行测试?
  • 我很确定我已经正确配置了它们(在项目结构下它被列为提供的依赖项)但我之前已经搞砸了,不过感谢您的建议!
  • Rob Fletcher 建议我尝试以 JUnit 的身份运行测试,我很快就会试一试!

标签: grails intellij-idea spock


【解决方案1】:

我设法解决了这个问题,在我的配置中添加了以下环境变量:

   _JAVA_OPTIONS='-Xverify:none'

【讨论】:

    【解决方案2】:

    首先检查您的配置并清除您已运行但现在失败的测试。有可能您将测试作为 JUnit 运行,现在当您再次运行它们时,它们会默认此行为。

    注意:您可以通过命令行(例如 grails test-app unit com.yourPackage.Whatever)运行测试来确定这是否是问题,如果它们按预期通过,然后按照以下步骤操作清除 IntelliJ 中保存的测试配置

    IntelliJ 步骤

    1. 点击运行
    2. 点击编辑配置
    3. 在弹出窗口的左侧窗格中单击箭头以展开 jUnit 测试
    4. 下一步单击一个测试,然后单击减号图标(对每个都执行此操作以将它们全部清除
    5. 转到要运行的测试并右键单击它,并确保选择 grails 选项而不是 jUnit。

    【讨论】:

      猜你喜欢
      • 2020-07-02
      • 2013-01-19
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 2012-02-06
      • 2014-01-04
      • 2015-09-29
      相关资源
      最近更新 更多