【发布时间】:2018-04-18 23:22:19
【问题描述】:
我正在将我们的项目从 MSTest 迁移到 NUnit。 我有一个场景需要执行以下条件
testContext.CurrentTestOutcome.Equals(UnitTestOutcome.Timeout)
您能否推荐与 MSTest 的 UnitTestOutcome.Timeout 等效的 NUnit?
【问题讨论】:
我正在将我们的项目从 MSTest 迁移到 NUnit。 我有一个场景需要执行以下条件
testContext.CurrentTestOutcome.Equals(UnitTestOutcome.Timeout)
您能否推荐与 MSTest 的 UnitTestOutcome.Timeout 等效的 NUnit?
【问题讨论】:
这个问题并不完全清楚。 @Francesco B. 已经将其解释为“如何指定超时?”并做出相应的回答。
我理解您在问“我如何才能检测到我的测试已超时?”简短的回答 - 您无法在测试本身中检测到它。它只能被正在执行您的测试的跑步者检测到。
更长的答案...
您可以使用 TestContext.CurrentContext.Result.Outcome 检查拆解中的测试上下文以查看测试结果。如果您的拆解需要知道测试失败,这将非常有用。
但是,您永远不会看到“超时”的结果,因为...
当然,如果我误解了这个问题,而您只是想知道如何指定超时,那么其他答案就是您想要的。 :-)
【讨论】:
根据official documentation,可以使用Timeout属性:
[Test, Timeout(2000)]
public void PotentiallyLongRunningTest()
{
...
}
当然,您必须以毫秒为单位提供超时值;超过该限制,您的测试将被列为失败。
有一个已知的“罕见”情况,即 NUnit 不遵守超时,这已经是 discussed。
【讨论】:
ExpectedExceptionAttribute,在 NUnit 3 中不再存在。