gpt4 book ai didi

unit-testing - 从 2.2.4 升级到 Grails 2.4.3 后,在单元测试期间,元类更改不会在测试之间重置

转载 作者:行者123 更新时间:2023-12-02 13:51:36 26 4
gpt4 key购买 nike

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

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

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

最佳答案

Grails 2.4.x 中的单元测试支持已被重构。 "What new in Grails 2.4"中有一些关于此的注释。指导。文档位于 unit testing guide

默认情况下,元类清理是在每个测试类之后完成的。源代码位于 https://github.com/grails/grails-core/blob/master/grails-plugin-testing/src/main/groovy/grails/test/runtime/MetaClassCleanerTestPlugin.groovy

在 Grails 2.4.3 中,进行了一项修复,该修复影响了 Grails 工件的元类清理。以前这是在执行每个测试方法后完成的: https://github.com/grails/grails-core/commit/1885351d2be8f74076f2c83edcbc048c5bcfd9d7

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

如果您想在测试类中的每个测试方法之后清除元类更改,您可以使用 FreshRuntime 注释测试方法。注解。应该支持将此注释添加到类级别,但该功能目前在 Grails 2.4.3 和 the bug 中已被破坏。将在 Grails 2.4.4 中修复。此提交修复了此问题: https://github.com/grails/grails-core/commit/27ceeb086baeb879c490f29f6d799cbd532c0772

综上所述,目前的解决方案是添加FreshRuntime每个测试方法的注释。之后GRAILS-11626在 Grails 2.4.4 中已修复,然后您可以在类级别使用该注释。

关于unit-testing - 从 2.2.4 升级到 Grails 2.4.3 后,在单元测试期间,元类更改不会在测试之间重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25165744/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com