私は統合テストで非常に具体的な状況があります。統合テストでデータベースにヒットしてもよろしいですか?
私はスプリングブートを使用していくつかのマイクロサービスで構成されたレストAPIを開発しています。これらのサービスの中には、基本的に、UIアプリケーションによってアクセスされるか、または内部の検証/クエリに消費されるための操作が難しいものがあります。
すべてのデータベースの操作は、従来のライブラリ(jpaはありません)によって行われ、非標準のデータベースを使用しています。良い例は実際のデータベースを使わないと言いますが、このシナリオでは、テスト時にダミーデータベースをどのように使用するのか想像できません(dbunitやh2など)。この方法で:
1 - 統合テストで実際のデータベースにヒットするのはいいですか?
1がOKであれば、私は別の質問があります。
通常、私たちはユニット/統合テストでのデータの状態を変更しないと。テストはお互いに独立していなければなりません。
私の場合、私はポストメソッドのレスポンスでエンティティIDが何であるかを知っているだけなので、get/put/deleteメソッドを実装するのは難しいです。もちろんget/put/deleteメソッドでは、最初に挿入して別の操作を行うことはできますが、この観点では、最後にテストの開始時とは異なる状態のデータベースを作成します。このように、別の質問があります:
2 - どのように私はテストの前に同じ状態にデータベースを回復することができますか?
私はそれが特定の状況である可能性があることを知っていますが、このシナリオをうまくテストするエレガントな方法を見つけるためには本当に助けに感謝します。
ありがとうございます。
統合テスト*は、*統合テストであるため、実際のデータベースにヒットします*。データベースをシードするには、DbUnitなど、さまざまな方法がありますが、他にもあります。 –
データを含むデータベースのコピーを取って、統合テストを終了した後に使用してください –
ライブデータを使用することを考えていますか?テストを実行している間に他の人がデータにアクセスしている可能性がありますか?データベースを変更して他の誰かがあなたのテストデータにアクセスしてそれが実際のデータだと思うなら、その原因は何か? – ajb