unit-testing - 在VS 2015测试资源管理器中使用 'Run All'时,为什么NUnit测试时间变慢?

标签 unit-testing nunit visual-studio-2015

我正在通过NUnit VS适配器在Visual Studio 2015中使用测试资源管理器来运行我的单元测试。

使用Test Explorer的“全部运行”命令时,我的测试会在一秒钟内运行并显示通过/失败,但总运行时间为34秒。

Test Explorer using 'Run All'

选择所有测试并从右键单击上下文菜单中使用“运行选定的测试”时,相同的测试总共需要1秒钟的运行时间。

Test Explorer using 'Run Selected Tests'

对于为什么使用“全部运行”需要花费更长的时间,我尚未找到任何线索。

最佳答案

让我们看一下输出窗口。如果我选择“全部运行”,则输出窗口如下所示

------ Discover test started ------
========== Discover test finished: 92 found (0:00:00.4993709) ==========
------ Run test started ------
========== Run test finished: 92 run (0:00:04.157636) ==========



如果我改为选择所有测试,则要测试输出窗口如下所示

------ Run test started ------
========== Run test finished: 92 run (0:00:03.7262618) ==========



关键是,当您选择“全部运行”时,测试浏览器必须遍历所有代码,并使用“TestClass”属性及其所有用“TestMethod”属性修饰的方法重新查找所有类(这是通过反射来完成的)在某些情况下可能会有些“缓慢”)。为什么?以便测试浏览器可以找到所有新的和现有的测试方法。

当您手动选择要测试的方法时,测试浏览器不必重新查找所有现有的和新的方法即可进行测试,因此速度更快。

这只是“总运行时间”的含义的一个猜测,我从未使用过NUnit,并且这些想法很久以后才可以在评论中发布。

关于unit-testing - 在VS 2015测试资源管理器中使用 'Run All'时,为什么NUnit测试时间变慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33488445/

相关文章:

c# - System.BadImageFormatException :Could not load file or assembly … incorrect format when trying to install service with installutil. 可执行文件

ios - 更新 ios swift 代码中的属性同时保持功能尽可能纯净和可测试的方法?

swift - 测试在抛出的函数上返回 "Type of expression is ambiguous without more context"

c# - 如何测试不应该执行的代码?

path - 如何获取 NUnit nunit-console.exe 的路径

visual-studio - 不使用鼠标运行 NUnit 测试?

C++ 迭代器作为 lambda 函数中的参数,断言失败 : "vector iterators incompatible"

c++ - Boost::Serialization VS2015 Release Mode Mnly 编译报错

c++ - VS 2015 c++ 编译问题

c# - Visual Studio Runner 中的 xUnit 错误消息