SQL Server 2008 データベースとエンティティ フレームワークを使用すると、単体テストのパフォーマンスに問題があります。この問題には、いくつかの奇妙な症状があります。
- データベースを使用した単一の単体テストには、常に 5 秒の倍数 + 1 秒 (テストの場合は 1 秒) かかります。つまり、1、6、11、16、または 21 秒です。
- それらの期間のどれが純粋にランダムに見えるか.
- 問題を突き止めて、セットアップをテストしたり、調整したり、行動したり、主張したり、解体したりすることはできません。データベースが使用されているときはいつでも、5 秒の遅延の「可能性」があるようです。
- 同僚のデータベース インスタンスを使用する場合、問題は発生しません (~1 秒/テスト)。
- SQL サーバー プロファイラーを使用すると問題は発生しません (~1 秒/テスト)。
- 単体テストをデバッグ モードで実行しても問題は発生しません。
- Visual Studio 2012 とアジャイル テスト ランナーへの移行時に問題が発生しました。
テスト出力の例:
Test case 1 (hiccup occurred on test init):
4/29/2013 4:01:26 PM test init
4/29/2013 4:01:31 PM after test init
4/29/2013 4:01:31 PM before arrange
4/29/2013 4:01:32 PM before act
4/29/2013 4:01:37 PM before assert
4/29/2013 4:01:38 PM test cleanup
Test case 2 (2 hiccups occurred, 1 in act and 1 in init):
4/29/2013 4:01:26 PM test init
4/29/2013 4:01:31 PM after test init
4/29/2013 4:01:31 PM before arrange
4/29/2013 4:01:32 PM before act
4/29/2013 4:01:37 PM before assert
4/29/2013 4:01:38 PM test cleanup
誰かが私を正しい方向に向けることができますか? SQL Server インスタンスに何か問題があるようです (接続プール?? / トランザクション設定??)