0

使用 SQL sever 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 回答