2017-12-24 13 views
0

ユニットテストの初心者です。私は、CRUDアプリケーションのユニットテストの完全なサンプル/サンプルを見つけられませんでした。C#ユニットテストnティアmvcアプリケーション

エンティティフレームワークを使用しているMVCアプリケーションで単体テストを追加したいと思います。

実際にテストを実行するたびにデータベースにデータを追加しますか? プロジェクトごとに個別の単体テストプロジェクトを作成していますか?

+3

ユニットテストであなたのアプリの小さな部分が確認されています。データアクセスコードは単体テストしないでください。代わりに、実際のデータベースの代わりにメモリからデータを格納/読み込みます。エンドツーエンドのテスト(実際のデータベースを含む)を行う統合テストを作成し、 – Shyju

答えて

1
  • 単体テストは
  • 単体テストは
  • ユニットテストは、単体テストでデータベースを使用して、他の試験

の単独で実行すべき他のアプリケーションのユニット単独で実行されるべき高速でなければならないであろう上記の "原則"に違反する

  • データベースへのアクセスが遅い
  • データベースはアプリケーションの "グローバルな状態"を表します。同じデータベースを使用すると、すべてのテストでデータベースを設定およびクリアし、テストを並行して実行する可能性がなくなります。

単体テストでは、テストを遅くする、またはグローバルな状態に依存する抽象的なものがすべて必要です。
あなたのケースでは、データベース操作だけを抽象化し、テストでそれを模擬するだけで十分です。
エンティティフレームワークコアは、In-Memory Database Providerを提供しています。ここでは、データベース操作をテストする高速ユニットテストを作成できます。

模擬データベースを使ってテストを書くには、模擬オブジェクトを設定して、テストに必要なデータを返すかアサートする必要があります。
InMemoryデータベースプロバイダを使用する場合は、テストのためにデータを挿入するか、期待される結果をアサートするためにデータベースを読み込む必要があります。

「テスト済みの」プロジェクトごとに独自のテストプロジェクトを作成するのは一般的な方法ですが、ニーズや期待に合わせて独自のソリューション構造を発明してください。主なアイデアは、動作や具体的なメソッドのいくつかの特派員テストをすばやく見つけることができるということです。

関連する問題