回归测试的重试属性 (NUnit) 问题



我们在启动用 C# 编写的自动测试时遇到了问题。我们在文档中使用 NUnit 和重试 (https://github.com/nunit/docs/wiki/Retry-Attribute)我发现"如果测试有意外的异常,则不会保留它。只有断言失败才能触发重试。问题是我们在其他地方遇到了问题 - 由于在构建测试期间测试计算机上的超时、重新启动或更改,没有断言(例如意外异常)。

我们使用 NUnit 3.11在我们的构建中,300 个测试中有 1 个由于意外异常而失败,并且构建失败。如果重复测试(针对每个异常),我们可以避免此问题。

[测试,顺序] [重试(最大重试计数)].....

实际:只有在断言失败后才会重复测试,但问题是我们希望在找到每个异常后重新运行它们(例如 MaxRetryCount=4)。

预期:每次异常后重新运行测试。

虽然你实际上没有问一个问题,但我假设它是这样的:"鉴于 NUnit 不像我想象的那样工作,我能做些什么呢?

通常的答案是,您应该接受导致错误的调用(或多个调用),并将其包装在断言中。

例如,假设您的测试调用

DoSomethingThatMayNotWork();

它在内心深处的某个地方抛出异常并终止运行。您知道这种情况会间歇性地发生,但您希望重试它,并将RetryAttribute放在我们的测试方法上。

在这种情况下,请将上述内容替换为类似

Assert.That(() => DoSomethingThatMayNotWork(), Throws.Nothing);

这会将任何未处理的异常转换为失败,并且将重试测试。

您可以通过检查预期的特定异常来优化此异常,以便不会在 NRE 之类的东西上重试测试,这通常是编程错误。

最新更新