Unit testing 原因是什么;第'阶段异常;指令选择'&引用;在Groovy/Grails单元测试中?

Unit testing 原因是什么;第'阶段异常;指令选择'&引用;在Groovy/Grails单元测试中?,unit-testing,grails,groovy,Unit Testing,Grails,Groovy,偶尔,在对Grails单元测试进行一些更新时,我会遇到以下错误: BUG! exception in phase 'instruction selection' in source unit ... unexpected NullpointerException 这是什么原因?或者,调试这个问题的最佳策略是什么?到目前为止,我最好的方法是迭代注释,直到代码编译完成。grails clean无法解决此问题 使用这个过程,我发现问题在于我的@TestFor(Class)注释。我在src/groov

偶尔,在对Grails单元测试进行一些更新时,我会遇到以下错误:

BUG! exception in phase 'instruction selection' in source unit ... unexpected NullpointerException

这是什么原因?或者,调试这个问题的最佳策略是什么?

到目前为止,我最好的方法是迭代注释,直到代码编译完成。grails clean无法解决此问题

使用这个过程,我发现问题在于我的
@TestFor(Class)
注释。我在src/groovy中将一些代码从一个服务转移到了一个类。这似乎导致注释中断。我真的不明白为什么会出现这种情况,但这足以让我工作起来

因此,如果您的被测类不是服务、控制器或类似类,请尝试删除
@TestFor()
注释


如果这不起作用,请将所有内容注释掉,然后一次添加一个内容。

在我的例子中,我的服务类没有默认构造函数。我通过提供默认构造函数解决了这个问题,@TestFor想要注入服务bean,因为我的服务bean没有默认构造函数spring容器无法注入

什么版本的Grails?这些
BUG遇到错误时,通常应该向Groovy团队报告(假设您可以制作一个展示问题的非常小的测试用例),这在2017年仍然是一个问题。@ayahuasca我认为这是一个完全不公平的评论。首先,自从我回答这个问题以来,我还没有遇到过这个问题。第二,这个问题确实是我代码中的一个错误,但我收到的错误并没有直接指出这一点。正如我在回答中提到的,
@TestFor()
注释“如果您被测试的类不是服务或控制器或类似的类”是没有意义的。grails或groovy中没有一个尚未解决的bug。我在grails生成的控制器测试代码中遇到了同样的问题-它在注释掉@TestFor之前不会编译(controller.class的名称)。