- PR -

JOTMの単体テスト

1
投稿者投稿内容
さくらさく
会議室デビュー日: 2007/02/06
投稿数: 5
投稿日時: 2007-02-06 10:06
お世話になっております。

現在JOTMを使い複数DBにアクセスする環境での単体テストを考えております。
単体テストとしてJUnit(またはそれに類するもの)を使いたいのですが、JUnitでUserTransactionを使う事は可能でしょうか?
自分でも探したのですが、見つかりません。

こうしたらできる。ここの記事を読めなどありましたらご教授願います。
あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2007-02-06 11:07
UserTransactionはAPIのインタフェースなので、
EasyMock辺りを使ってモックを作るとよいでしょう。
JTAを使うレイヤーの単体テストなので、本物のDBを使う必要はないですし。

実装コード側もこのような単体テストを行える設計である必要もあります。
さくらさく
会議室デビュー日: 2007/02/06
投稿数: 5
投稿日時: 2007-02-06 11:13
あしゅさん

EasyMockは使ったことありませんが、調べてみたいと思います。
ありがとうございます。
さくらさく
会議室デビュー日: 2007/02/06
投稿数: 5
投稿日時: 2007-02-07 10:57
お世話になっております。

モックオブジェクトについて少し調べてみたのですが、データオブジェクト層をモックオブジェクトにするということでしょうか?

仮にそうだとしたらデータオブジェクト層のテスト実施はJUnitでは出来ないということでしょうか?
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-02-07 13:11
SpringやSeasar2などのDIコンテナを利用されてみてはいかがでしょう。
Seasar2を使っていますが、JTAの実装が含まれています。
さくらさく
会議室デビュー日: 2007/02/06
投稿数: 5
投稿日時: 2007-02-07 13:24
かつのりさん

> SpringやSeasar2などのDIコンテナを利用されてみてはいかがでしょう。
現在どのフレームワークを使い実装するか決まっておりません。
やはり先に使うものを決めてしまわないと、実装・テストは難しいでしょうか?
あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2007-02-07 13:27
引用:

さくらさくさんの書き込み (2007-02-07 10:57) より:
モックオブジェクトについて少し調べてみたのですが、データオブジェクト層をモックオブジェクトにするということでしょうか?



データオブジェクト層って具体的には何ですか?
#あまり見かけない単語なので・・・。

設計次第ではモックを使ったテストは行えない事もあります。
単体テストしやすいようにDIコンテナを使ったりするわけで。

UserTransactionを操作するメソッドの構造は、
コード:

utx.begin();
try {

// データアクセス層や他のロジックの呼び出し
// 設計によっては処理を直接記述することもある

} catch (なんちゃら例外 e) {
utx.setRollbackOnly();
throw e;
} finally {
if (utx.getStatus() == Status.STATUS_ACTIVE) {
utx.commit();
} else {
utx.rollback();
}
}


となる事が多いと思うのですが、

utxをUserTransactionを実装したモックに変更できれば
tryブロックを簡単にテストすることができるようになります。

・・・で、

このクラスのコンストラクタがJNDIからUserTransactionをlookup()
してたりすると、このメソッドを単体テストするのは大変になりますよね?

#モックを作ってJNDIにバインディングしてテストケースを実行するとか。

そういったところがテストしやすい設計かどうかに影響してくるわけです。
詳しい話はネット上にいくらでも転がってるので調べて下さい。

[ メッセージ編集済み 編集者: あしゅ 編集日時 2007-02-07 13:33 ]
さくらさく
会議室デビュー日: 2007/02/06
投稿数: 5
投稿日時: 2007-02-08 10:04
あしゅさん
色々記事を読んでもやもやっとしていたところが、すっきりしました。
ありがとうございます。

引用:

あしゅさんの書き込み (2007-02-07 13:27) より:
データオブジェクト層って具体的には何ですか?
#あまり見かけない単語なので・・・。


データアクセス層でした。
失礼しました;

ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)