当前位置:  开发笔记 > 编程语言 > 正文

从NUnit TestContext检索测试持续时间

如何解决《从NUnitTestContext检索测试持续时间》经验,为你挑选了1个好方法。

我希望能够在我的测试代码中访问测试的持续时间.我一直在看TestContextNUnit 中的类,但是当我发现信息与"FullName"相关时,我无法确定在何处访问测试的持续时间.

[TearDown]
public void TearDown()
{
    Console.WriteLine(TestContext.CurrentContext.Test.FullName); 
}

除了测试的全名,我可以访问Properties字典,但在所有情况下,只有值是"_CATEGORIES"条目.

我如何完成我想做的事情?

谢谢 :-)



1> Sergii Zhevz..:

无法从NUnit获取此信息,TestContext因为NUnit不在那里提供此类信息.基本上,单元测试应该很快并告诉您某些部件是否损坏,但不要将它们用作时间注册系统.

我的问题是为什么在单元测试中需要这些信息?

NUnit提供了定义测试时间限制的属性:TimeoutMaxTime.如果测试用例的运行时间超过指定的时间,则将使用这两个属性来说明此失败.如果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
    }
}

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有