NUnit首先在Resharper测试运行器中使用Entity Framework测试非常慢

Ste*_*veC 7 resharper nunit entity-framework visual-studio entity-framework-4

使用Entity Framework 4.1时,第一个NUnit测试的缓慢是否有任何解决方案?

我发现第一次测试大约需要10秒钟,其余的测试都在0.01秒内完成(根据Resharper Show Time选项)

如果我使用NUnit GUI运行测试,那么第一次测试需要10秒,但是如果我重新运行整套测试运行时间不到0.5秒...... 直到我重新编译解决方案

我还有一个在IIS中托管的WCF服务的NUnit测试,它调用EF,第一个在大约3秒内完成.然后,如果我重新运行测试,它会降低到1秒,正如预期的那样,在重新编译时,第一次会回到3秒.

但是最初的NUnit测试是针对具有调用EF的方法的类库,总是大约10秒标记,即没有减少时间

好吧,我知道IIS正在做"某事" [什么?],但在这两种情况下我都在使用NUnit来进行呼叫......为什么第一次呼叫需要10秒以上,另一次是3秒然后是1秒第二次接下来的电话?

为了让我感到困惑,我编写了一个简单的控制台应用程序,它可以调用正在测试的类中的一个EF使用方法,并且它可以在1秒内完成.

UPDATE ...重写相同的测试,因为MSTest测试在大约3.5秒内完成了第一次测试,这与NUnit GUI运行器中的第一次测试运行相当,所以问题似乎是NUnit在Visual中的Resharper测试运行器工作室

更新2 ...是的,问题确实似乎是Resharper测试运行器.TestDriven.NET和Visual Nunit 2010都更快.

更新3 ...它现在以JetBrains作为问题记录

Lad*_*nka 2

这是常见的行为,因为第一个测试必须编译“EF 视图” - 当您第一次使用模型中映射的任何内容时,就会发生这种情况。然后,相同的编译视图将被缓存并重用。这是可以避免的,但它需要您手动生成视图代码(通过使用 EdmGen.exe)将该代码添加到您的项目中并与您的解决方案一起编译。每次在 EDMX 中更改任何内容时,您都必须执行此操作,除非您将其作为项目中的某些预构建操作(这反过来会减慢您的构建速度)。