データベースに大きく依存する Java Play Framework 2.0 を使用する Web アプリケーションに取り組んでいます。すでにデータが含まれているデータベースにアクセスする必要がある機能テストの作成を開始したいのですが、実際のアプリケーションのデータベースに触れたくないので、テストデータベースをテスト間でリセットしたいです. これを設定して Play アプリケーションにアクセスするにはどうすればよいですか?
2 に答える
私はJavaPlayを使用したことはありませんが、データベーステストの概念は、あらゆる種類の言語で一般的に知られています。私の観点から、使用する3つのソリューションがあります
本番環境にない別のデータベースを作成し、そのデータベースに対してテストを実行します。プロは間違いなく、実際のデータに対してコードをテストしているということです。短所は、時々新しいデータをインポートし、スキーマの変更を追跡することです
各テストスイート/ケースの前にリセットされる、構造といくつかの事前定義された図のみを含むクリーンなデータベースをインポートできます。
最も好ましい方法は、モックアップオブジェクトを使用することです。これは、カプセル化できるように、ORMフレームワークを使用しているという前提の下でのみ機能します。
さらなる研究のためのいくつかのリンク
http://mockrunner.sourceforge.net(jdbcでサポートされているモック)
http://code.google.com/p/mockito/(一般的なモック用)
データベースが MySQL である必要がない場合は、H2のようなメモリ内データベースを使用することをお勧めします。テスト目的に最適で、非常に高速にスピンアップします。また、メモリ内データベースを使用すると、テストの副作用 (テストごとに新しい DB) をクリーンアップすることを心配する必要がありません。これには、テストが自己完結型であり、コード (またはビルド/自動化サーバー) をテストする他の誰かが MySQL をインストールする必要がないという利点もあります。
MySQL をデータベースとして使用する必要がある場合は、@Before/@After フックをスクリプト化してスキーマをセットアップし、必要なデータを初期化することができますが、回避できる場合はメモリ内ルートを使用することをお勧めします。