我希望能够在我的测试代码中访问测试的持续时间.我一直在看TestContext
NUnit 中的类,但是当我发现信息与"FullName"相关时,我无法确定在何处访问测试的持续时间.
[TearDown] public void TearDown() { Console.WriteLine(TestContext.CurrentContext.Test.FullName); }
除了测试的全名,我可以访问Properties
字典,但在所有情况下,只有值是"_CATEGORIES"条目.
我如何完成我想做的事情?
谢谢 :-)
无法从NUnit获取此信息,TestContext
因为NUnit不在那里提供此类信息.基本上,单元测试应该很快并告诉您某些部件是否损坏,但不要将它们用作时间注册系统.
我的问题是为什么在单元测试中需要这些信息?
NUnit提供了定义测试时间限制的属性:Timeout
和MaxTime
.如果测试用例的运行时间超过指定的时间,则将使用这两个属性来说明此失败.如果Timeout
定义了属性,则测试将尽快中断.如果MaxTime
定义了属性,则不会中断测试用例.
您还可以检查包含测试结果的文件, TestResult.xml
并找到表示执行时间的属性(称为time
).如果你的老板想要一些好看的东西,可以使用特殊工具nunit-results生成HTML报告.
你还想知道代码中的执行时间吗?从这个类继承你的测试:
[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 } }