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