c# - 从 NUnit TestContext 检索测试持续时间

标签 c# unit-testing nunit

我希望能够在我的测试代码中访问测试的持续时间。我一直在查看 NUnit 中的 TestContext 类,但是当我找到关于“FullName”的信息时,我无法弄清楚从哪里访问测试持续时间。

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

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

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

谢谢:-)

最佳答案

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

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

NUnit 提供属性来定义测试的时间限制:TimeoutMaxTime .如果测试用例运行的时间比指定的时间长,则这两个属性都将用于说明此失败。如果定义了Timeout属性,测试会尽快中断。如果定义了 MaxTime 属性,则测试用例不会被中断。

您还可以检查包含测试结果的文件 TestResult.xml 并找到表示执行时间的属性(称为时间)。如果你的老板想要一些好看的东西,可以使用特殊工具生成 HTML 报告 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
    }
}

关于c# - 从 NUnit TestContext 检索测试持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34031365/

相关文章:

c# - 使用 Moq 测试抽象类

java - 如何使用 Mockito 消除外部依赖?

c# - 新的 HttpConfiguration(); Nunit 失败但 MsTests 失败

testing - 从命令行运行 nunit-tests

c# - 迭代时如何跳出 IAsyncEnumerable?

c# - 我如何调试远程机器上的程序?

c# - 系统.ArgumentNullException : Value cannot be null in unit test - C#

nunit - 在 Gallio 3.1 中运行 NUnit 2.5.5 测试

c# - 普通 .NET Web 服务应用程序中 HTTP session 状态的替代方案

c# - 类型化数据集 : Can't change connection String