回归测试的重试属性 (NUnit) 问题
Retry Attribute (NUnit) issue for regression tests
我们在启动用 C# 编写的自动测试时遇到问题。我们在文档中使用 NUnit 和重试(
https://github.com/nunit/docs/wiki/Retry-Attribute) 我发现 'If a test has an unexpected exception, it is not retained. Only assertion failures can trigger a retry.'
问题是我们在其他地方也有问题——没有断言(例如意外异常),因为在构建测试期间超时、重启或测试机器上的更改。
我们使用 NUnit 3.11
在我们的构建中,300 个测试中有 1 个因意外异常而失败,构建失败。如果重复测试(对于每个异常),我们可以避免这个问题。
[测试,顺序]
[重试(最大重试次数)]
.....
实际:
仅在断言失败后才重复测试,但问题是我们希望在找到每个异常后重新运行它们(例如 MaxRetryCount=4)。
预计:
每次异常后重新运行测试。
虽然你实际上没有问问题,但我假设它类似于 "Given that NUnit doesn't work the way I thought it did, what can I do about it?"
通常的答案是您应该接受导致错误的调用(或调用)并将其(它们)包装在断言中。
例如,假设您的测试调用
DoSomethingThatMayNotWork();
其中某处深处抛出异常并终止 运行。您知道这种情况会间歇性发生,但您更愿意重试并已将 RetryAttribute
放在我们的测试方法中。
在这种情况下,将上面的内容替换为
Assert.That(() => DoSomethingThatMayNotWork(), Throws.Nothing);
这会将任何未处理的异常转换为失败并重试测试。
您可以通过检查预期的特定异常来改进这一点,这样就不会在 NRE 之类的情况下重试测试,这通常是编程错误。
我们在启动用 C# 编写的自动测试时遇到问题。我们在文档中使用 NUnit 和重试( https://github.com/nunit/docs/wiki/Retry-Attribute) 我发现 'If a test has an unexpected exception, it is not retained. Only assertion failures can trigger a retry.' 问题是我们在其他地方也有问题——没有断言(例如意外异常),因为在构建测试期间超时、重启或测试机器上的更改。
我们使用 NUnit 3.11 在我们的构建中,300 个测试中有 1 个因意外异常而失败,构建失败。如果重复测试(对于每个异常),我们可以避免这个问题。
[测试,顺序] [重试(最大重试次数)] .....
实际: 仅在断言失败后才重复测试,但问题是我们希望在找到每个异常后重新运行它们(例如 MaxRetryCount=4)。
预计: 每次异常后重新运行测试。
虽然你实际上没有问问题,但我假设它类似于 "Given that NUnit doesn't work the way I thought it did, what can I do about it?"
通常的答案是您应该接受导致错误的调用(或调用)并将其(它们)包装在断言中。
例如,假设您的测试调用
DoSomethingThatMayNotWork();
其中某处深处抛出异常并终止 运行。您知道这种情况会间歇性发生,但您更愿意重试并已将 RetryAttribute
放在我们的测试方法中。
在这种情况下,将上面的内容替换为
Assert.That(() => DoSomethingThatMayNotWork(), Throws.Nothing);
这会将任何未处理的异常转换为失败并重试测试。
您可以通过检查预期的特定异常来改进这一点,这样就不会在 NRE 之类的情况下重试测试,这通常是编程错误。