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

Mitsutaka Sato [E-MAIL ADDRESS DELETED]
2008年 11月 28日 (金) 15:32:27 JST


中村様
お世話になっております。
ご回答ありがとうございました。

ええ、Txを使えばロールバックされることは理解しているのですが、

1. テストデータを流し込み Aという状態のデータを作り出す。
2. テスト対象のロジックを実行する。(エラーが発生するようなパラメータで)
3. データが Aという状態にとどまっていることを確認する。

ということをしたいのですが、1,2,3が同じTx内だと2の段階で1,2がロールバックされるので 3の検証が通りません。

そこで、setupXXX,tearDownXXXを使えばできるかな〜と思ったんですが、無理筋でしたね・・


2008/11/24 Toshihiro Nakamura <[E-MAIL ADDRESS DELETED]>

> 中村(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 mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://ml.seasar.org/archives/seasar-user/attachments/20081128/ccb43b89/attachment-0001.html>


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