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