さまざまなデータベースの CRUD
操作の場合、対応する単体テストを作成する必要があります。検索にはそれほど問題はありませんが、追加、削除、変更には問題があり、コードは本番環境で実行されているため、実質的に変更することはできません。
今思いつくのは、開発用データ用のデータベースを本番環境のデータベースとは別に作成するという解決策なのですが、これがちょっと面倒です。 企業の実際の開発プロセスでは、データベースに対して変更が必要なコードの単体テストは一般的にどのように行われますか?
I は mockito の概要を簡単に調べましたが、良い解決策が見つからなかったようです。この分野に関して何か提案や情報をお勧めできる人はいますか?
注:IBM コミュニティで単体テストの概要を確認しました:
単体テストは実行が簡単である必要があります。単体テストの実行には、構成などの面倒な操作が必要であってはなりません。単体テスト コードにデータベースやネットワークなどへのアクセスが含まれている場合、そのテストは真の単体テストではありません。1 つの理論では、
単体テストでは実際のデータベースに接続することは許可されていないため、すべてのデータベース操作はモックでなければなりませんでは、コードのデータベース部分はどのようにテストされるべきでしょうか?
伊谢尔伦2017-05-17 10:01:03
単体テストはh2を使用して実行できます。一般的に、エンタープライズレベルの開発には独自のテスト環境があり、データベースのテストには大きな問題はありません
为情所困2017-05-17 10:01:03
これは単体テストではなく、統合テストです
h2 などのインメモリ データベースは使用しないでください。これらのデータベースの構文と機能は運用データベースとは異なり、テストが失敗する可能性があります
Spring を使用している場合は、Spring の公式ドキュメントの統合テストに関する章を参照してください
phpcn_u15822017-05-17 10:01:03
この問題を解決するには、インメモリ データベースを使用します。インメモリ データベースを導入した後、コード内で ddl スクリプトと必要な初期化データ dml スクリプトを管理する必要があります。単体テストを実行するたびにインメモリ データベースを起動し、ddl スクリプトと dml スクリプトをフラッシュします。単体テスト ロジックを実行するための推奨される管理データベース スクリプト ツールには、Flyway と liquibase
が含まれます。