2008年10月8日水曜日

S2Batch JUnit 続き
 昨日の無限ループだが、原因はAOPのPointCutの指定にあった。
RepeatOperationsInterceptorをAOPするテストなのだが、その仕様を理解しないまま対象メソッドを「.*」としていた。
今回のInterceptorの仕様としては、
* メソッドのリターンがない場合(Voidメソッド)なら無限に繰り返し
* リターンがある場合は、NULLまたはFALSEになるまで繰り返すと
というもので、処理の途中でVoidのSetterを呼んでいる部分が無限ループとなっていた。
対象を絞り込んだところ正常終了となった。

[[教訓]] 仕様が不明な場合は異常となる可能性が低くなる方向から試行するべし。

0 件のコメント: