首页 > 解决方案 > 如何获取 Nunit 测试的执行时间,包括设置时间?

问题描述

我们正在对每个拉取请求运行我们的测试。目前,我们的测试大约需要 2h30 左右,这对我们来说有点太长了,特别是考虑到我们只有 2 台机器并行执行 10 人的测试。

所以我们考虑每周只运行一次更“昂贵”的测试,并且不要阻止拉取请求。不理想,但已经取得了进展。

问题是,显然我们有强烈的印象,即在 Visual Studio 和 azure devops 中是测试方法本身的时间,不包括OneTimeSetupandSetup方法(以及它们的 TearDown 对应物)。至少运行时间比它显示的要长(如果在最后 1 分钟内没有进行任何测试,我们会得到大约 10 秒的执行时间)。

如何让这些时间包括在内?在 Visual Studio 中还是通过命令行?

使用 Visual Studio + NUnit 测试适配器执行测试。

标签: c#.netvisual-studionunit

解决方案


NUnit 报告其 XML 结果输出所用的时间。

对于测试用例,报告的时间是SetUp + TestMethod + TearDown。顺便说一句,传统上,使用 xunit 模式的框架将上述方法称为“测试”,而单独的方法称为“裸测试”。

OneTimeSetUp 和 OneTimeTearDown 不与特定测试用例相关联,而是与包含这些用例的类相关联。如果你使用 NUnit SetUpFixtures,它们也有一个与之相关的执行时间。

您可以通过浏览 XML 文件或使用您喜欢的任何语言编写报告来从 XML 文件中找出所有这些细节。如果您的大部分耗时设置都位于 TestFixtures 中(直接或通过基类),我建议从每个夹具时间的列表开始。OTOH,如果您已将昂贵的操作重新定位到单独的 SetUpFixture 中,请从列出命名空间花费的总时间开始。


推荐阅读