为什么从GroovyTestCase继承会导致Grails2.2中的Spring错误?
Grails在创建域类时为我生成的集成测试类并不扩展GroovyTestCase类。然而,我看到了许多作者推荐的方法(这是使用为什么从GroovyTestCase继承会导致Grails2.2中的Spring错误?,spring,grails,groovy,integration-testing,Spring,Grails,Groovy,Integration Testing,Grails在创建域类时为我生成的集成测试类并不扩展GroovyTestCase类。然而,我看到了许多作者推荐的方法(这是使用shouldFail方法的一个例子,该方法似乎确实有效) 但是,当我在交互式Grails控制台中运行test app时,从GroovyTestCase扩展我的测试类会导致以下错误消息: Spring Loaded: Cannot reload new version of foo.barTests Reason: Supertype changed from java/l
shouldFail
方法的一个例子,该方法似乎确实有效)
但是,当我在交互式Grails控制台中运行test app
时,从GroovyTestCase扩展我的测试类会导致以下错误消息:
Spring Loaded: Cannot reload new version of foo.barTests
Reason: Supertype changed from java/lang/Object to groovy/util/GroovyTestCase
这是我应该关心的事情吗?我在网上搜索过,找不到其他人抱怨这个错误,所以Grails2.2可能有新功能。请告知
我正在grails交互控制台中运行测试(在没有参数的情况下运行
grails
时得到的结果)。我已经让我的测试从Object继承了一段时间,但当我运行测试应用程序时,我仍然偶尔会将这些消息输出到HTML测试报告中(“从GroovyTestCase更改为Object”的变体)。我很确定这是与此相关的Grails错误
AST转换注释
弹簧加载模块
我也遇到过这种奇怪的行为
导致这个问题的步骤似乎是一个Groovy类只编译一次而不进行转换,因此它是java.lang.Object
的一个子类
当AST转换启动它时,该类将重新编译。这一次,它成为另一个类的子类。然后Spring loaded无法将它们重新加载到内存中(因为JVM不允许同一个类重新定义其超类)。您是否在另一个grails测试应用程序之前尝试过grails clean
?它是否会产生同样的错误?请注意,您的链接已经过时(它是关于grails 1.3.x的),奇怪的是,当我撤消扩展时,grails再次抱怨相反的情况(从groovy/util/GroovyTestCase更改为java/lang/Object
),即使我先做了一个grailsclean
,它也会这样做。您是在GGTS内部还是在命令行上运行这些测试?如果是GGTS,那么是什么版本?我使用的是grails交互控制台。请参阅更新的问题。如果这确实是Grails中的一个bug,您认为它会对生产环境产生负面影响吗?(恐怕我对spring-loaded的了解非常有限。)为了安全起见,我是否应该回到Grails的早期版本呢?@Stephan别担心,它可以安全生产。我已经在云中运行了一个2.2应用程序。Spring-loaded仅在dev
环境中工作。谢谢。我不知道。