2009-04-15 20 views
3

単体でテストする必要がある簡単なCRUD操作があります。 これらのテストケースはDAOレイヤーのためのものなので、すべてのテストはデータベースに照らし合わせられているため、偽装することはできません。JUnitテストケース - データの設定

私は更新用にもう1つを作成し、読み込み用にもう1つのテストケースを作成しました。

  1. 私はJUnitクラスのデータをハードコードする必要がありますか、それとも外部化しますか?

  2. Read TestCaseは明らかにデータベースにデータを必要とします。テストケースの作成に依存してデータを設定するか、SQLステートメントを使用する必要がありますか?

これに関するベストプラクティスは何ですか?

これについて議論するインターネットリソースを教えていただけたら、それは素晴らしいことです。

答えて

5

Spring has excellent support for this sort of thing - "テスト"データベースに対して操作したい単体テストで、個々の単体テストで再作成するようにスクリプト化することができます。

最後の文の後半部分は、再利用可能で拡張可能な単体テストを開発するための鍵です。データベースに対する単体テストは、楽観的に特定の状態にあるデータに頼るべきではありません。以前の単体テストを最初に実行する - 各単体テストごとにデータベースを再作成して、各テストケースがデータの「クリーン」バージョンを取得するようにします。

実際にSpring MVCを設定するためのステップバイステップのチュートリアルは、私がSpring MVCを使用していない場合でも貴重な参考資料となると思います。これはテストのセットアップ方法の参考に使用できますビルドスクリプトから作成/初期化するデータベース、Springコンテナを使用して各テスト実行時にデータを再ロードするデータベースなど

2

DBUnitを使用することをお勧めします。ファイルを使用してデータベースを既知の状態にセットアップすることができ、期待される結果機能との良好な比較が可能です。スタートガイドはhereです。

また、テストケースの一環としてコミットを実行しないで、tearDown()でロールバックすることもできます。

関連する問題