为什么继承GroovyTestCase会导致Grails 2.2中出现Spring错误?

时间:2013-01-20 20:22:10

标签: spring grails groovy integration-testing

Grails在创建域类时为我生成的集成测试类不会扩展GroovyTestCase类。但是,我已经看到许多作者推荐它(here是一个例子,以便使用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

这是我应该关注的吗?我在网上搜索过,找不到其他人抱怨这个错误,所以它可能是Grails 2.2的新功能。请指教。


我正在grails交互式控制台中运行我的测试(在没有参数的情况下运行grails时会得到什么)。我已经离开了从Object继承的测试一段时间,但是当我运行test-app时,我偶尔会将这些消息输出到HTML测试报告(“从GroovyTestCase更改为Object”变种)。

1 个答案:

答案 0 :(得分:2)

我很确定这是与

相关的Grails错误
  1. AST转换注释
  2. 弹簧模块
  3. 我也遇到过这种奇怪的行为。

    导致此问题的步骤似乎是Groovy类在没有转换的情况下编译一次,因此它是java.lang.Object的子类。

    当AST变换器踢它时,该类再次被重新编译。这一次,它成为另一个类的子类。然后Spring加载无法将它们重新加载到内存中(因为JVM不允许同一个类重新定义其超类)。