とめどもSeasar日誌

2004 | 05 |

2004-05-20

[]S2Unitの挙動 17:05

S2Unitを使って各テストメソッドが実行されるとき、どーいう順番で何が動くのかS2.0.8のソースを追っかけて纏めてみました。ソース追っかけたと言っても、S2TestCase#runBare()メソッドを読んだだけですけど(;^_^A

  1. setUp()メソッド呼出
  2. 各テストメソッド固有のsetUpメソッド(テストメソッドがtestXxx()ならsetUpXxx()メソッド)呼出
  3. S2コンテナ初期化
  4. TestCaseのフィールドに、コンテナが管理しているコンポーネントをバインド
  5. S2TestCaseのフィールドに、コンテナが管理しているDataSourceオブジェクトをセット
  6. テストメソッド名の最後に"Tx"が付くならトランザクション開始
  7. テストメソッド実行
  8. トランザクション開始していたらロールバック
  9. 自動バインドしてたフィールドにnullをセット
  10. S2コンテナ終了
  11. 各テストメソッド固有のtearDownメソッド(tearDownXxx()メソッド)呼出
  12. tearDown()メソッド呼出

なんでこんなの書く気になったかというと、setUp()メソッドでreadXlsAllReplaceDb()メソッドを呼び出したら例外が発生したため、その原因を探ってたからだったりする。DataSourceは5の所まではnullなので、setUp()やらsetUpXxx()やらで、S2TestCaseが実装しているメソッドのうちDataSourceを使うものを呼び出しちゃうと例外が発生しちゃうようだ。