私たちのチームは、データベースにアクセスして結果を検証する数百の統合テストを行っています。すべての統合テスト用に 2 つの基本クラスがあります。1 つは取得のみのテスト用で、もう 1 つは作成/更新/削除テスト用です。取得のみの基本クラスは、TestFixtureSetup 中にデータベースを再生成するため、テスト クラスごとに 1 回だけ実行されます。CUD 基本クラスは、各テストの前にデータベースを再生成します。各リポジトリ クラスには、対応する独自のテスト クラスがあります。
ご想像のとおり、この全体にはかなりの時間がかかります (実行に約 7 ~ 8 分かかり、急速に成長します)。これを CI (CruiseControl.Net) の一部として実行することは問題ではありませんが、ローカルで実行すると時間がかかり、コードをコミットする前にそれらを実行することは実際には禁止されています。
私の質問は、これらのタイプの統合テストの実行を高速化するのに役立つベスト プラクティスはありますか?
SQLite ではサポートされていないデータベース固有の機能 (計算列など) を使用しているため、メモリ内 (SQLite 風) で実行できません。
また、チーム全体がそれらを実行できる必要があるため、それらのインスタンスの接続文字列がすべて同じでない限り、SQL Server Express などのローカル インスタンスでそれらを実行するとエラーが発生しやすくなります。
あなたのショップでこれをどのように達成していますか?
ありがとう!