IntelliJ中运行grails测试的难度:非法使用非虚函数调用

时间:2014-01-07 16:24:00

标签: grails intellij-idea spock

最近我一直在尝试在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中都有同样的问题

2 个答案:

答案 0 :(得分:3)

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

   _JAVA_OPTIONS='-Xverify:none'

答案 1 :(得分:0)

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

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

IntelliJ步骤

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