2011-12-15 15 views
2

統合テストスイートをgrails test-app -integrationで実行すると、すべてのテストが合格になります。しかし、私はgrails test-appでそれらを実行すると、ユニットテストに合格したが、統合テストがエラーで失敗:今すぐGrailsの統合テストは、 'grails test-app'を実行した場合にのみ失敗します

Cannot set readonly property: requestAttributes for class: 
org.springframework.web.context.request.RequestContextHolder 

、私はRequestContextHolderのすべてのインスタンスのために検索したスポットを見つけることができませんでしたこれはテスト/アプリケーションによって設定されています。

私の質問は、統合テストとテストスイート全体の違いは何ですか?前のテストではregisterMetaClassが呼び出されなかったためにテストが失敗するインスタンスが実行されましたが、この状況はスイート全体で異なるようです。

答えて

2

これは私にとって試験汚染のようです。

私は単なる単体テストと1つの統合テストを実行しようとしています。それが失敗した場合は、別の単体テストに切り替え、まだ失敗しているかどうかを確認します。ユニットテストが1つだけ実行されている場合は、ユニットテストが不良である可能性が高いため、統合テストでそれらをバッチで実行して失敗の原因を突き止めることができます。

私がこのようなことをするもう1つのことは、プロジェクトをソース管理下に置いていれば、テストがすべて成功した既知の良いバージョンに戻って、それらがすべて実行されていることを確認することです。あなたの環境に何かがあるかもしれません。それが実行されている場合、ヒントの半分の方法でリビジョンに移動してください。絞り込むまで手動バイナリ検索を続けます。

gitmercurial have a built in feature called "bisect"の両方を使用すると、手動で更新することなく、エラーの原因となった正確なリビジョンを検索できます。あなたが別のRCSを利用しているなら、それもそうかもしれません。

+0

Tedさん、ありがとうございました。私はちょうどプロジェクトに参加したので、テストがどれほど長く壊れているのか分かりません。 – Igor

+1

素晴らしい!私はあなたのために働いてうれしいです。私は同じような問題に遭遇しました。テストが個別に実行されても、グループとしてではなく、ほとんど常にテスト汚染です。 –

関連する問題