アプリを Grails 1.3.7 から 2.2 にアップグレード中です
これまでのところ、比較的痛みがなく、簡単です。
単体テストの実行を開始するまで。
1.3.7 では、すべてのテストに合格しました。
2.2 では、約半分が失敗しています。テストは変更されていません。古いスタイルの mockDomain のままです...
私が最も懸念しているのは、一部のドメイン クラスで基本的な gorm 機能が欠落していることです。
.list や .get など
失敗: testList_NoMaxSpecified_10Shown(com.little.bldvwr.StreamControllerTests) | groovy.lang.MissingMethodException: メソッドの署名がありません: >com.little.bldvwr.Stream.list() は引数の型に適用できます: () 値: [] 可能な解決策: list()、list()、list()、リスト(java.lang.Object)、リスト(java.util.Map)、>リスト(java.lang.Object)
と
失敗: >testAddFailureOutputToHappyPathWithIntegrationFailure(com.little.bldvwr.LogParserServiceTests) | groovy.lang.MissingMethodException: メソッドの署名がありません: >com.little.bldvwr.Result.get() は引数の型に適用できます: () 値: [] 可能な解決策: get(java.io.Serializable)、get(java .lang.Object)、>get(java.io.Serializable)、getId()、grep()、grep(java.lang.Object)
このタイプの障害の一般的なパターンは次のとおりです。
mockDomain(Phase, [new Phase(id:1, name: 'xxx')])
mockDomain(Result, [new Result(id:1, phase: Phase.get(1), failureOutput:"")])
logParserService.addFailureOutputTo(Result.get(1))
そして、署名なしエラーの原因となっているのは、その最後の get です。
新しい単体テスト機能の使用を開始する予定ですが、現在の 500 以上のテストを書き直す必要がないようにしたいと考えていました。
考え、アイデア?
-クラーク