私は最近、ASP.Net MVCコントローラーアクションに対していくつかの統合テストを作成しており、テストを実行するために存在する必要のあるテストデータを設定するのが難しいことに不満を感じています。
たとえば、コントローラーの「追加」、「編集」、「削除」アクションをテストしたいと思います。「追加」テストをうまく書くことはできますが、「編集」テストを書くには、「追加」テストのコードを呼び出してレコードを作成し、編集できるようにする必要があることがわかります。テストクラスで多くのセットアップを行いますが、どちらも特に魅力的ではありません。
理想的には、統合テストフレームワークを使用または開発して、統合テストに再利用可能な方法でシードデータを追加しやすくし、アレンジ/アクト/アサートテストのアレンジの側面で、特にアレンジする必要があるもののアレンジに集中できるようにします。テスト中のコードに間接的にのみ関連する参照データのロードを配置することではなく、私のテスト。
私はたまたまNHibernateを使用していますが、データシード機能はそれを認識せず、データベースを直接操作できる必要があると思います。ORMは変更される可能性がありますが、私は常にSQLデータベースを使用します。
私はNUnitを使用しているので、テスト/テストフィクスチャのセットアップ/ティアダウンに接続することを想定しています(ただし、優れたソリューションは他のテストフレームワークに転送できる可能性があると思います)。
私はメインプロジェクトでFluentMigratorを使用してスキーマと参照データのシードを管理しているので、ソリューション全体で一貫したアプローチのためにFluentMigratorフレームワークを使用できることは素晴らしいことですが必須ではありません。
だから私の質問は、「C#での統合テストのためにデータベースデータをどのようにシードするのですか?」です。SQLを直接実行しますか?フレームワークを使用していますか?