5

インメモリ データベースと開発データベースを比較してテストするのはいつですか?

また、関連する副次的な質問として、開発データベースを使用する場合、個別開発データベース、統合開発データベース、またはその両方を使用しますか?

また、++、単体テストの場合、リポジトリ/DAL などのモックアウトよりもインメモリ データベースを使用するのはいつですか?

4

2 に答える 2

7

与えられたテストケースのデータを簡単にシードでき、非常に特定の操作がテストされている場合、メモリ内は単体テストに最適です実際のデータベースは、データの前提条件がより複雑であり、テストの完了後に基本データを残すことに価値がある統合テストに適しています。

私たちにとって、JUnitテストの「高速」テストスイートで許可するのは、外部の依存関係(データベース、ファイル、ネットワークなど)がないものだけです。これにより、開発者と開発者の両方がスイートを迅速かつ効率的に実行できます。チェックイン時の継続的インテグレーション。絶対にDBに移動する必要がある特定のテストがある場合は、メモリ内のテストが実行する唯一の方法です。

覚えておくべきいくつかのポイント:

  • 単体テストでデータベースを使用する必要がある場合は、慎重に検討してください。これは、データアクセス層がテストしようとしているビジネスロジックと緊密に結合されており、モックアウトできないという点で、設計が不十分であることを示している可能性があります。
  • 統合テストに実際のデータベースを使用する場合は、テストが終了したときに常にデータを元の状態に復元するようにしてください。他のいくつかのテストがデータを台無しにしたため、多くの無駄な時間と統合テストの失敗を目にしました。

あなたの他の質問に関しては、それは本当にあなたの必要性に依存します。別のコードブランチに関係のないスキーマ変更が必要になる場合があるため、経験則として、コードブランチごとに1つの開発データベースを使用します。専用の開発データベースを用意することが重要ですQAチームなどとデータベースを共有しなければならない開発チームの数に驚いています。他のチームに影響を与えたり、他のチームの作業を妨げたりしないように、サンドボックス環境で変更を加えることができることが重要です。あなたはあなたがうまくやっているそれらの要件を満たしています。

于 2008-09-24T16:24:42.900 に答える
2

私のチームでは、それは開発者マシン上のインメモリであり、継続的インテグレーション サーバー上の実データベースです。

于 2008-09-24T16:04:40.610 に答える