ホームページ  >  に質問  >  本文

mysql - Java 単体テストでは、データベース部分を変更するコードをどのようにテストしますか?

さまざまなデータベースの CRUD 操作の場合、対応する単体テストを作成する必要があります。検索にはそれほど問題はありませんが、追加、削除、変更には問題があり、コードは本番環境で実行されているため、実質的に変更することはできません。

今思いつくのは、開発用データ用のデータベースを本番環境のデータベースとは別に作成するという解決策なのですが、これがちょっと面倒です。 企業の実際の開発プロセスでは、データベースに対して変更が必要なコードの単体テストは一般的にどのように行われますか?

Imockito の概要を簡単に調べましたが、良い解決策が見つからなかったようです。この分野に関して何か提案や情報をお勧め​​できる人はいますか?

注:IBM コミュニティで単体テストの概要を確認しました:

単体テストは実行が簡単である必要があります。単体テストの実行には、構成などの面倒な操作が必要であってはなりません。単体テスト コードにデータベースやネットワークなどへのアクセスが含まれている場合、そのテストは真の単体テストではありません。

1 つの理論では、

単体テストでは実際のデータベースに接続することは許可されていないため、すべてのデータベース操作はモックでなければなりませんでは、コードのデータベース部分はどのようにテストされるべきでしょうか?

阿神阿神2736日前609

全員に返信(3)返信します

  • 伊谢尔伦

    伊谢尔伦2017-05-17 10:01:03

    単体テストはh2を使用して実行できます。一般的に、エンタープライズレベルの開発には独自のテスト環境があり、データベースのテストには大きな問題はありません

    返事
    0
  • 为情所困

    为情所困2017-05-17 10:01:03

    1. これは単体テストではなく、統合テストです

    2. h2 などのインメモリ データベースは使用しないでください。これらのデータベースの構文と機能は運用データベースとは異なり、テストが失敗する可能性があります

    3. Spring を使用している場合は、Spring の公式ドキュメントの統合テストに関する章を参照してください

    返事
    0
  • phpcn_u1582

    phpcn_u15822017-05-17 10:01:03

    この問題を解決するには、インメモリ データベースを使用します。インメモリ データベースを導入した後、コード内で ddl スクリプトと必要な初期化データ dml スクリプトを管理する必要があります。単体テストを実行するたびにインメモリ データベースを起動し、ddl スクリプトと dml スクリプトをフラッシュします。単体テスト ロジックを実行するための推奨される管理データベース スクリプト ツールには、Flyway と liquibase
    が含まれます。

    返事
    0
  • キャンセル返事