私はgrails 2.1.xにアップグレードする途中です。古いスタイルのテストをやり直す必要があります。Intellij Ideaでのgrails 2.1.3テストの実行:Spockテストの奇妙なエラー:Domainクラス[class x.y.Z]を追加できません。これはドメインではありません
私はspock Specに新しいテストを追加しました。このテストでは、追加のDomainクラスを模擬する必要があります。
この前、私が持っていた:
@Mock([Event, EventType])
は今、私が持っている:
@Mock([Event, EventType, Notification])
Notification.groovyは、Grailsのアプリの下で(イベントとイベントタイプよりも正確に同じパッケージと物理ディレクトリであります/ドメイン)ので、間違いなく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フィールドは広告ではありません、例外を吹きますこれが実行される前にded。
私は何をする必要がありますか?ドメインクラスを@Entityとしてマークする必要がありますか(これは実際にテストパスになります)。
私のユニットテストが合格するためには必須ではないと確信しています。
アドバイスはありますか?
UPDATE: 実は、私はちょうど私が私のIDE内部のユニットテストを実行するとき、この問題にのみ発生することを発見した:
http://jira.grails.org/browse/GRAILS-9989:IntelliJのアイデア12.1
問題が作成さをここでテストアプリで、
http://youtrack.jetbrains.com/issue/IDEA-105087
私は両方のドメインクラスの静的マッピングブロックを削除し、テストPA sses!
これは統合テストフォルダかユニットテストフォルダにありますか?また、仕様を拡張して@TestForを使用するspock統合テストをお持ちの場合は、非常に奇妙なエラーが発生しますが、インテグレーションテストにはintegationspecを使用する必要があります。 –
こんにちはジェフ、単体テストです。統合フォルダにはまだ仕様がありません.Junitスタイルのテストのみです。しかし、興味を持ってくれてありがとう、私はこれを念頭に置くでしょう。 – loteq
そのドメインオブジェクトには静的マッピングブロックがありますか? –