0

統合テストに Arquillian を使用しており、JPA を使用するリポジトリ レイヤーをテストしたいと考えています。DBSetup を使用してみましたが、Destination クラスが見つからないというメッセージが表示されるので、各テストのテスト データを使用してデータベースをセットアップする他の方法があるのでしょうか? 前回の実行テストからデータを削除した後に同じ主キーを持つ行を挿入できるように、テストデータベースで自動インクリメントを有効にしないのは普通ですか?

4

1 に答える 1

0

PROD データのサブセットを使用して統合スキーマをセットアップすることをお勧めします。これは Oracle を使用して行いました。ここでは、スキーマのベース DMP (データポンプ インポートで使用するためのスキーマのダンプ) ファイルをリポジトリに保存しました。スキーマが変更された場合は、DMP を更新します。私の目標は、テストを同じ DMP に対して複数回実行できるようにすることでした。そうすれば、テストを実行するたびに DMP を再インポートするために CI ツールを入手する必要がなくなります。

すべてのテストで、行った変更を元に戻します。アイテムを追加する場合は、アイテムとそのすべての履歴データを削除してください。レコードを変更した場合は、元に戻します。これを行う場合、再設定する必要はありません

テストのどの時点でも、自動インクリメント ID を使用してレコードを見つける必要はありません。これを行うと、今後のテストで ID が変更されて、再び見つからなくなる可能性があります。自然なキー (たとえば、first_name、last_name、middle_name、または SSN) によって、または将来常に存在する他の方法によって常に検索します。

PROD スキーマを変更する必要がある場合は、最初に統合スキーマを変更してください。それに対してテストを実行してから、PROD スキーマを変更します。

また、できるだけ頻繁に新しいセッションを取得することも控えてください。セッションを取得するには、非常にコストがかかります。

于 2012-10-27T22:21:46.300 に答える