为什么从GroovyTestCase继承会导致Grails2.2中的Spring错误?

为什么从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

Grails在创建域类时为我生成的集成测试类并不扩展GroovyTestCase类。然而,我看到了许多作者推荐的方法(这是使用
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
    环境中工作。谢谢。我不知道。