我希望能够在我的测试代码中访问测试的持续时间。我一直在看TestContext
NUnit 中的类,但是当我找到有关“FullName”的信息时,我无法弄清楚在哪里访问测试的持续时间。
[TearDown]
public void TearDown()
{
Console.WriteLine(TestContext.CurrentContext.Test.FullName);
}
除了测试的全名之外,我还可以访问Properties
字典,但在所有情况下,唯一的值是“_CATEGORIES”条目。
我怎样才能完成我想做的事?
谢谢 :-)
无法从 NUnit 获取此信息TestContext
因为 NUnit 不提供此类信息。基本上,单元测试应该很快并告诉您某些部分是否损坏,但不要将它们用作时间注册系统。
我的问题是为什么在单元测试中需要这些信息?
NUnit 提供属性来定义时间限制对于测试: and 。如果测试用例运行的时间超过指定的时间,则这两个属性将用于告知此失败。如果Timeout
属性定义后,测试将尽快中断。如果MaxTime
属性定义了测试用例不会被中断。
你也可以检查包含测试结果的文件 TestResult.xml
并找到一个代表执行时间的属性(它被称为time
)。如果你的老板想要好看的东西,可以使用特殊工具生成 HTML 报告nunit 结果 https://github.com/CharliePoole/nunit-results.
你还想知道吗代码中的执行时间?从此类继承您的测试:
[TestFixture]
public abstract class BaseTestClass
{
private Stopwatch _stopWatch;
[SetUp]
public void Init()
{
_stopWatch = Stopwatch.StartNew();
}
[TearDown]
public void Cleanup()
{
_stopWatch.Stop();
Debug.WriteLine("Excution time for {0} - {1} ms",
TestContext.CurrentContext.Test.Name,
_stopWatch.ElapsedMilliseconds);
// ... add your code here
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)