2013-04-08 11 views
11

私は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!

+1

これは統合テストフォルダかユニットテストフォルダにありますか?また、仕様を拡張して@TestForを使用するspock統合テストをお持ちの場合は、非常に奇妙なエラーが発生しますが、インテグレーションテストにはintegationspecを使用する必要があります。 –

+0

こんにちはジェフ、単体テストです。統合フォルダにはまだ仕様がありません.Junitスタイルのテストのみです。しかし、興味を持ってくれてありがとう、私はこれを念頭に置くでしょう。 – loteq

+1

そのドメインオブジェクトには静的マッピングブロックがありますか? –

答えて

19

IDEAが1回のテスト実行から別のテスト実行まで正しくクリーンアップしなかったためです。テストをパスすると、プロジェクトを再ビルドします。

+0

プロジェクトの再構築の意味を明確にすることはできますか?私はこの問題にもかかわらず、確かにIntelliJに関係していますが、それをリセットするために正確に何が行われる必要があるのか​​分かりません。 – dbrin

+1

IDEA(14.x)の最新バージョンを使用している場合、同じ動作を引き起こす別のバグがあり、プロジェクトの再構築は機能しません。 https://youtrack.jetbrains.com/issue/IDEA-138275を参照してください。コメントには回避策があります:設定のプロセスコンパイルを無効にする:-Dgroovyc.in.process = false。 – loteq

+0

ok私はこのオプションを試しています。私は何か他のことをする必要がありますか、私はまだ問題を見せているのですか? – dbrin

関連する問題