Unit testing 从2.2.4升级到Grails2.4.3后,元类更改在单元测试期间不会在测试之间重置

Unit testing 从2.2.4升级到Grails2.4.3后,元类更改在单元测试期间不会在测试之间重置,unit-testing,grails,spock,Unit Testing,Grails,Spock,我们正在尝试从Grails2.2.4升级到2.4.3。在Grails2.2.4中,如果我在单元测试中包含GrailsUnitTestMixin,则元类更改在测试之间重置。在2.4.3中,这种行为似乎不再有效,我的测试也失败了。在查看GrailsUnitTestMixin的最新代码时,我不再看到对MetaClassRegistryCleaner的引用 自2.2.4以来,该行为是否发生了变化?什么是确保单元测试期间元类更改在测试后被丢弃的适当方法 我知道Spock@confinectMetaClas

我们正在尝试从Grails2.2.4升级到2.4.3。在Grails2.2.4中,如果我在单元测试中包含GrailsUnitTestMixin,则元类更改在测试之间重置。在2.4.3中,这种行为似乎不再有效,我的测试也失败了。在查看GrailsUnitTestMixin的最新代码时,我不再看到对MetaClassRegistryCleaner的引用

自2.2.4以来,该行为是否发生了变化?什么是确保单元测试期间元类更改在测试后被丢弃的适当方法


我知道Spock@confinectMetaClassChanges注释用于限制特定更改的范围,但是2.2.4中以前的行为更加方便。

Grails 2.4.x中的单元测试支持已经重构。指南中有一些关于这方面的注释。文档在文档中

默认情况下,元类清理在每个测试类之后完成。 源代码在中

在Grails2.4.3中,修复了影响Grails人工制品元类清理的问题。之前,这是在执行每个试验方法后进行的:

由于Grails在默认情况下缓存“测试运行时”实例,以便在单个测试类中执行所有测试,因此在默认情况下,在每个测试方法之后,元类更改不会被清除

如果希望在测试类中的每个测试方法之后清除元类更改,可以使用注释对测试方法进行注释。应该支持将此注释添加到类级别,但该功能目前在Grails2.4.3中已被破坏,并将在Grails2.4.4中修复。此提交修复了此问题:


总之,当前的解决方案是向每个测试方法添加注释。在Grails2.4.4中修复后,您可以在类级别使用注释。

Grails2.4.x中的单元测试支持已经重构。指南中有一些关于这方面的注释。文档在文档中

默认情况下,元类清理在每个测试类之后完成。 源代码在中

在Grails2.4.3中,修复了影响Grails人工制品元类清理的问题。之前,这是在执行每个试验方法后进行的:

由于Grails在默认情况下缓存“测试运行时”实例,以便在单个测试类中执行所有测试,因此在默认情况下,在每个测试方法之后,元类更改不会被清除

如果希望在测试类中的每个测试方法之后清除元类更改,可以使用注释对测试方法进行注释。应该支持将此注释添加到类级别,但该功能目前在Grails2.4.3中已被破坏,并将在Grails2.4.4中修复。此提交修复了此问题:

总之,当前的解决方案是向每个测试方法添加注释。在Grails2.4.4中修复后,可以在类级别使用注释