我正在使用重试,以便在失败时多次运行我的测试。 但是,我注意到当出现异常失败时(例如等待一个elemnt时出现超时),那么测试将只运行一次而不是配置。
这就是我正在尝试的:
[Test]
[NUnit_retry.Retry(times: 3, requiredPassCount: 1)]
public void MyTest()
{
some code...
}
答案 0 :(得分:1)
NUnit的[Retry]
属性仅在测试失败时重试,而不是错误。这意味着AssertionExceptions
将触发重试,但其他异常则不会。
您没有说出如何执行超时 - 您是否使用NUnit [Timeout]
属性?这应该触发重试。如果你的超时导致了另一种异常,那么你可能需要预料到这一点,而不是“断言它不会发生”#39;你可以这样做,断言相关的行不会抛出任何异常,例如
string toFetch;
Assert.That(() => { toFetch = FetchMyString(); }, Throws.Nothing);
如果你想在全局范围内做某事,你可能希望实现一个在ResultState.Error上重试的自定义属性,以及ResultState.Failure。看看当前RetryAttribute是如何实现的,这可能会让您知道从哪一个开始。