gpt4 book ai didi

grails - 在 Intellij Idea : Bizarre error in Spock test: Cannot add Domain class [class x. y.Z] 中运行 grails 2.1.3 测试。它不是域

转载 作者:行者123 更新时间:2023-12-03 23:28:36 25 4
gpt4 key购买 nike

我正在升级到 grails 2.1.x,需要重做一些旧式测试。

我刚刚在我的 spock 规范中添加了一个新测试,对于这个测试,我需要模拟一个额外的域类。

在此之前,我有:

@Mock([Event, EventType])

我现在有:
@Mock([Event, EventType, Notification])

Notification.groovy 与 Event 和 EventType 位于相同的包和物理目录中(在 grails-app/domain 下),因此它绝对是一个 grails 域类。

当我尝试运行我的测试时,我得到以下堆栈跟踪:
org.codehaus.groovy.grails.exceptions.GrailsConfigurationException: Cannot add Domain class [class x.y.Notification]. It is not a Domain!
at org.codehaus.groovy.grails.commons.DefaultGrailsApplication.addArtefact(DefaultGrailsApplication.java:911)
at org.codehaus.groovy.grails.commons.DefaultGrailsApplication.addArtefact(DefaultGrailsApplication.java:615)
at grails.test.mixin.domain.DomainClassUnitTestMixin.mockDomain(DomainClassUnitTestMixin.groovy:131)
at grails.test.mixin.domain.DomainClassUnitTestMixin.mockDomain(DomainClassUnitTestMixin.groovy:128)

当我通过兔子洞并开始调试执行时,我到达了 DomainClassArtefactHandler 的这一部分(第 87 行):
            // make sure the identify and version field exist
testClass.getDeclaredField(GrailsDomainClassProperty.IDENTITY);
testClass.getDeclaredField(GrailsDomainClassProperty.VERSION);

这会发生异常,因为我猜 id 字段不存在

所以出了点问题,在执行之前没有添加 GORM 字段。

有没有人对我需要做的事情有什么建议?我是否需要将我的域类标记为 @Entity(这实际上使我的测试通过)?

我很确定这不应该是我的单元测试通过的强制性要求。

有什么建议吗?

更新:
实际上,我刚刚发现这个问题只有在我的 IDE 中运行单元测试时才会出现:intellij Idea 12.1

问题已创建,这里有测试应用程序:

http://jira.grails.org/browse/GRAILS-9989

http://youtrack.jetbrains.com/issue/IDEA-105087

当我删除两个域类中的静态映射块时,测试通过了!

最佳答案

问题似乎是由于 IDEA 没有从一次测试运行到另一次测试正确清理。一旦您重建项目,测试就会通过。

关于grails - 在 Intellij Idea : Bizarre error in Spock test: Cannot add Domain class [class x. y.Z] 中运行 grails 2.1.3 测试。它不是域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15874155/

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