Entity framework 4 为什么要用EntityFramework4和SQLServer2008R2长时间运行我的单元测试

Entity framework 4 为什么要用EntityFramework4和SQLServer2008R2长时间运行我的单元测试,entity-framework-4,sql-server-2008-r2,Entity Framework 4,Sql Server 2008 R2,在使用SQLServer2008数据库和实体框架时,我遇到了一个单元测试性能问题。这个问题有一些奇怪的症状: 使用数据库的单个单元测试总是需要5秒+1秒(测试为1秒)的倍数。所以1,6,11,16或21秒 哪一个持续时间似乎是完全随机的 我不能把这个问题归结为测试设置、安排、操作、断言或拆卸。无论何时使用数据库,我似乎都有5秒延迟的“机会” 使用同事的数据库实例时不会出现问题(~1秒/测试) 使用SQL server探查器时不会出现问题(~1秒/测试) 在调试模式下运行单元测试时不会出现问题

在使用SQLServer2008数据库和实体框架时,我遇到了一个单元测试性能问题。这个问题有一些奇怪的症状:

  • 使用数据库的单个单元测试总是需要5秒+1秒(测试为1秒)的倍数。所以1,6,11,16或21秒
  • 哪一个持续时间似乎是完全随机的
  • 我不能把这个问题归结为测试设置、安排、操作、断言或拆卸。无论何时使用数据库,我似乎都有5秒延迟的“机会”
  • 使用同事的数据库实例时不会出现问题(~1秒/测试)
  • 使用SQL server探查器时不会出现问题(~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实例(连接池???/事务设置???)似乎有问题。

是否为每个测试或每个装置创建了Db/对象上下文? 尝试将Db/ObjectContext创建移动到fixture设置方法

正如你所说的,这些是单元测试而不是集成测试。你能模拟数据并在内存中完成所有工作吗


最后检查您没有影响性能的仅“发布”设置/连接字符串,即调试启用了多个活动结果集,但发布未启用?

谢谢您的回答。不幸的是,找不到不同的“仅发布”设置。而且,这也不能解释为什么我是唯一一个遇到这个问题的人。运行相同单元测试的同事都没有这些问题。