1

私がグーグルで読んだ多くの人々は、実際のデータベースとの統合テストと比較して、いわゆるインメモリデータベースでリポジトリクラスのユニットテストをしようと努力しています。

後者を行うことの問題はどこにありますか?

4

2 に答える 2

2

EF を使用している場合、EF がデータを正しく永続化するかどうかを確認するためのテストを作成する必要はありません。したがって、テストに実際のデータベースは必要ありません。テストする必要があるのはコードロジックだけであり、この場合はメモリ内データベースが最適です。懸念事項を分離し、柔軟で、実行が簡単で、より高速に実行できます。実際のデータベースを使用します。

さらに、実際のデータベースとの統合テストの実行は非常に複雑です。実行する前に、いくつかの構成 (接続文字列、データベースの削除と再作成など) が必要で、時間がかかる場合があります。構成ミス (テスト中に共有データベースを使用するなど) が原因でテストが失敗する可能性があり、デバッグに時間がかかります。

于 2013-02-18T08:03:02.433 に答える
0

インメモリデータベースまたは実際のデータベースに対してテストしているかどうかにかかわらず、ユニットテストを行っていません-どちらも統合テストです。どちらも実際に何らかの形式の接続とプロバイダーの実装をテストします。

インメモリデータベースと実際のデータベースを使用する主な利点は次のとおりです。

  • アクセス許可 - 通常、実際のデータベースを使用するには、より高いレベルのアクセス許可と接続が必要です。ファイルの書き込み権限やデータベース サーバーへのアクセス権と同様です。インメモリ データベースでは、同じレベルのアクセス許可は必要ない場合があります。
  • 速度 - インメモリ データベースは、実際のデータベースよりも高速にスピンアップおよびティアダウンできます。

パターンによっては (つまり、作業単位を使用している場合)、リポジトリをテストするためのデータベースさえ必要ない可能性があります。

于 2013-02-18T08:08:53.810 に答える