0

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 インスタンスに何か問題があるようです (接続プール?? / トランザクション設定??)

4

1 に答える 1

0

Db/Object コンテキストは、テストごとまたはフィクスチャごとに作成されますか? Db/ObjectContext の作成をフィクスチャのセットアップ メソッドに移動してみてください。

また、あなたが言うように、これらは統合テストではなく単体テストであり、データをモックしてすべてをメモリ内で行うことはできませんか?

最後に、パフォーマンスに影響を与える「リリース」のみの設定/接続文字列がないことを確認します。つまり、デバッグには複数のアクティブな結果セットが有効になっていますが、リリースはありませんか?

于 2013-04-29T14:31:30.927 に答える