質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JUnit

JUnitは、Javaで開発されたプログラムのユニットテストを行うためのアプリケーションフレームワークです。簡単にプログラムのユニットテストを自動化することができ、結果もわかりやすく表示されるため効率的に開発時間を短縮できます。

Q&A

解決済

2回答

5795閲覧

DAOをテストする時、IDをどのようにしていますか?

redhat98

総合スコア236

JUnit

JUnitは、Javaで開発されたプログラムのユニットテストを行うためのアプリケーションフレームワークです。簡単にプログラムのユニットテストを自動化することができ、結果もわかりやすく表示されるため効率的に開発時間を短縮できます。

0グッド

1クリップ

投稿2015/12/09 03:34

こんにちは

タイトルに書いてある通り、DAOをJunitでテストする時IDをどのようにしていますか?

具体的にテストしたいメソッドはこんな感じです。

public Entity findById(int id) { return IDを使ってDBを検索; }

MySQLを使っているのですが、IDがオートインクリメントされちゃうので困っています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

テスト前(セットアップ前)にトランザクションを開始して、テスト後にロールバックするようにすればいいのではないでしょうか?
前処理後処理で書いてももいいですし、フレームワークによってはそういう挙動がサポートされているはずです。
おそらくたいていの ORマッピングフレームワークでは、テスト用にそういった機能や追加ライブラリ等が用意されているはずです。
Dao 実装に利用してらっしゃるフレームワークでのテスト(JUnit利用)について調べてみてはいかがでしょう?

投稿2015/12/25 13:46

kozuchi

総合スコア1193

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kozuchi

2015/12/25 13:51

自己コメントです。 ごめんなさい、少し勘違いしてました、IDのカウンタはロールバックされませんね。
guest

0

例のメソッドはselectに見えますが、
selectする際にインクリメントされるってことでしょうか?

投稿2015/12/09 05:17

liguofeng29

総合スコア801

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

redhat98

2015/12/09 08:44

すいません、記載が少なかったです。 findByIDのテストを行う前に、DBUnitでテストデータをCLEAN_INSERTしています。 そのため、IDが変わってしまうという感じです。
liguofeng29

2015/12/09 08:50

IDはどいう方法でインクリメントを行っていますか。 シーケンスを使ってますか?
redhat98

2015/12/09 11:42

MySQLを使っているので、AUTO_INCREMENTを使っています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問