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 是如何实现的,这可能会让您了解从哪里开始。

Retry Attribute Docs