[Seasar-user:16371] Re: [s2unit] deleteDb で エラー (SQLServer)

Toshihiro Nakamura [E-MAIL ADDRESS DELETED]
2008年 11月 24日 (月) 12:25:14 JST


中村(taedium)です。

> setUpXxx()
> ・DBをDataSetにバックアップ
> ・テストデータ用のExcelを流し込み(replaceDb)
> 
> testXxx()
> 
> tearDownXxx()
> ・テストデータを削除
> ・バックアップしたDBを元に戻す
> 
> という構成でテストを作ったのですが、
> tearDownXxx() のところで、
> 
> 「dataSourceがnullあるいは空であってはいけません」が発生してしまいます。
> 
> setUpxxx(), tearDownXxx() の先頭で、setupDataSource()を呼ぶようにしているのですが
> 上記エラーが発生します。

setUpxxx()やtearDownXxx()では、dataSourceのような
S2コンテナに管理されるコンポーネントを利用できません。
(S2コンテナが利用できる状態にありません)

テストメソッドの名前をtestXxxTxというように「Tx」を
最後につけると、トランザクションが自動でロールバックされます。
この機能を使えば、テストメソッドの前後で
テストデータのバックアップやリストアなど行う必要がありません。

同等の処理は、「Tx」つきメソッドと
readXlsAllReplaceDb()を使って次のように記述できます。

  public void testXxxTx() {
    readXlsAllReplaceDb("aaa/bbb/ccc.xls");
    // テスト処理
    ...
  }

-- 
Toshihiro Nakamura



Seasar-user メーリングリストの案内