5

私は最近、ASP.Net MVCコントローラーアクションに対していくつかの統合テストを作成しており、テストを実行するために存在する必要のあるテストデータを設定するのが難しいことに不満を感じています。

たとえば、コントローラーの「追加」、「編集」、「削除」アクションをテストしたいと思います。「追加」テストをうまく書くことはできますが、「編集」テストを書くには、「追加」テストのコードを呼び出してレコードを作成し、編集できるようにする必要があることがわかります。テストクラスで多くのセットアップを行いますが、どちらも特に魅力的ではありません。

理想的には、統合テストフレームワークを使用または開発して、統合テストに再利用可能な方法でシードデータを追加しやすくし、アレンジ/アクト/アサートテストのアレンジの側面で、特にアレンジする必要があるもののアレンジに集中できるようにします。テスト中のコードに間接的にのみ関連する参照データのロードを配置することではなく、私のテスト。

私はたまたまNHibernateを使用していますが、データシード機能はそれを認識せず、データベースを直接操作できる必要があると思います。ORMは変更される可能性がありますが、私は常にSQLデータベースを使用します。

私はNUnitを使用しているので、テスト/テストフィクスチャのセットアップ/ティアダウンに接続することを想定しています(ただし、優れたソリューションは他のテストフレームワークに転送できる可能性があると思います)。

私はメインプロジェクトでFluentMigratorを使用してスキーマと参照データのシードを管理しているので、ソリューション全体で一貫したアプローチのためにFluentMigratorフレームワークを使用できることは素晴らしいことですが必須ではありません。

だから私の質問は、「C#での統合テストのためにデータベースデータをどのようにシードするのですか?」です。SQLを直接実行しますか?フレームワークを使用していますか?

4

2 に答える 2

2

Sql Server Compact で統合テストを行うことができます。.sdf ファイルがあり、ファイルのパスを接続文字列として指定して接続できます。これにより、セットアップと操作がより迅速かつ簡単になります。

統合テストでは、おそらく何百万行ものデータは必要ありません。テスト データをデータベースに挿入し、TestDbOriginal.sdf.

テストを実行するときは、この ' TestDbOriginal.sdf' のコピーを作成し、既にデータがシードされているそのコピーで作業してください。特定のシナリオをテストする場合は、 add、remove、edit などのメソッドを呼び出してデータを準備する必要があります。

運用テストまたはパフォーマンス テストを行う場合は、Sql Server 2008 など、元のサーバー バージョンに戻してください。

于 2013-03-19T15:01:53.223 に答える
1

それが必ずしも「正しい」ことかどうかはわかりませんが、私は常に追加/作成メソッドを使用してシードを作成してきました。

于 2013-03-19T14:51:40.750 に答える