gpt4 book ai didi

nunit - 从 NUnit 中的多个断言失败中删除失败消息

转载 作者:行者123 更新时间:2023-12-04 16:04:03 33 4
gpt4 key购买 nike

我已将我的测试配置为在发生故障时最多重试 x 次,以确保故障是合法的,而不是运行期间的侥幸。我没有在初始失败时记录错误消息。

但是,我注意到如果我正在运行测试,第一个测试会失败,然后第二个测试会通过,我会通过 TestContext.CurrentContext.Result.Message 和请注意,第一次迭代失败已记录,并且我的测试显示为失败,即使测试在第二次迭代期间通过。如果两个测试都失败了,我将收到“测试中多次失败或警告”。

我想保留最终运行的失败与所有迭代的所有失败。有没有办法从 TestContext.CurrentCOntext.Result.Message 中删除初始失败?

编辑:我使用的是 NUnit v 3.10.1,当我降级到 v.3.4.0 时,我在没有对代码进行任何修改的情况下获得了我想要的体验。

最佳答案

如果测试失败,请在测试中使用 NUnit 的 [Retry(5)] 属性重试测试。您发布的链接中的解决方法取决于 NUnit 未记录的内部行为,这些行为可能会在版本之间发生变化。

根据您在下面的评论进行更新,如果您需要处理意外异常,请将可能抛出的不稳定代码包装在 try/catch block 中,然后在该 block 之外执行您的断言。

[Test]
[Retry(5)]
public void TestFlakyMethod()
{
int result = 0;
try
{
result = FlakyAdd(2, 2);
}
catch(Exception ex)
{
Assert.Fail($"Test failed with unexpected exception, {ex.Message}");
}
Assert.That(result, Is.EqualTo(4));
}

int FlakyAdd(int x, int y)
{
var rand = new Random();
if (rand.NextDouble() > 0.5)
throw new ArgumentOutOfRangeException();

return x + y;
}

除上述之外,您还可以使用Assert.DoesNotThrow,这样更简洁,也更容易编写。

[Test]
[Retry(5)]
public void TestFlakyMethod()
{
int result = 0;
Assert.DoesNotThrow(() => {{
result = FlakyAdd(2, 2);
});
Assert.That(result, Is.EqualTo(4));
}

关于nunit - 从 NUnit 中的多个断言失败中删除失败消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49520854/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com