繁体   English   中英

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

[英]NUnit first test very slow with Entity Framework in Resharper test runner

使用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作为问题记录

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

各种跑步者之间的差异可能是由于他们正在使用的平台(x64与x86)。 在x64模式下启动EF要慢得多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM