使用 Entity Framework 4.1 时,有没有解决第一个 NUnit 测试缓慢的方法?
我发现第一次测试大约需要 10 秒,其余测试在 0.01 秒内运行(根据 Resharper Show Time 选项)
如果我使用 NUnit GUI 运行测试,再次第一次测试需要 10 秒,但如果我重新运行整个测试集,运行时间不到 0.5 秒......直到我重新编译解决方案
我还对 IIS 中托管的 WCF 服务进行了 NUnit 测试,该服务调用 EF,第一个测试在大约 3 秒内完成。然后,如果我重新运行测试,它会减少到 1 秒,并且正如预期的那样,在重新编译时,第一次又回到了 3 秒。
但是,针对具有调用 EF 方法的类库的原始 NUnit 测试总是在 10 秒标记附近,即时间没有减少
好的,我知道 IIS 正在做“某事”[什么?],但在这两种情况下,我都使用 NUnit 来进行调用……为什么第一个调用需要 10 秒以上,另一个是 3 秒,然后是 1第二个后续调用??
真正让我感到困惑的是,我编写了一个简单的控制台应用程序,它使用正在测试的类中的方法调用其中一个 EF,并且它设法在 1 秒内完成。
更新 ...与 MSTest 测试相同的测试在大约 3.5 秒内完成了第一个测试,这与 NUnit GUI 运行器中的第一次测试运行相当,所以问题似乎是 Visual Studio 中 NUnit 的 Resharper 测试运行器
更新 2 ...是的,问题似乎出在 Resharper 测试运行器上。 TestDriven.NET 和 Visual Nunit 2010 都更快。
更新 3 ...现在登录 JetBrains作为一个问题
请您参考如下方法:
这是常见的行为,因为第一个测试必须编译“EF View ” - 第一次使用模型中映射的任何内容时会发生这种情况。然后缓存并重用相同的编译 View 。这是可以避免的,但它需要您手动生成 View 代码 ( by using EdmGen.exe ) 将该代码添加到您的项目中并与您的解决方案一起编译。每次更改 EDMX 中的任何内容时,您都必须这样做,除非您将其作为项目中的某些预构建操作(这反过来会减慢您的构建速度)。




