繁体   English   中英

在Intellij中运行grails 2.1.3测试Idea:Spock测试中的奇怪错误:无法添加Domain类[class xyZ]。 它不是域名

[英]running grails 2.1.3 tests in Intellij Idea: Bizarre error in Spock test: Cannot add Domain class [class x.y.Z]. It is not a Domain

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

我刚刚为我的spock Spec添加了一个新测试,对于这个测试,我需要模拟一个额外的Domain类。

在此之前,我有:

@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没有在一次测试运行中正确清理到另一次。 重建项目后,测试将通过。

我也有类似的问题。 我只需要刷新gradle项目。

  1. 导航到IntelliJ中的Gradle tan。
  2. 您可以单击刷新图标或右键单击项目,然后选择“刷新Gradle项目”。

重新在IntelliJ中运行测试,错误应该消失。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM