Nunit_Retry仅在超时失败时运行

时间:2017-01-18 07:11:16

标签: c# selenium nunit appium

我正在使用重试,以便在失败时多次运行我的测试。 但是,我注意到当出现异常失败时(例如等待一个elemnt时出现超时),那么测试将只运行一次而不是配置。

这就是我正在尝试的:

 [Test]
[NUnit_retry.Retry(times: 3, requiredPassCount: 1)]
        public void MyTest()
     {
        some code...
     }
        
 

1 个答案:

答案 0 :(得分:1)

NUnit的[Retry]属性仅在测试失败时重试,而不是错误。这意味着AssertionExceptions将触发重试,但其他异常则不会。

您没有说出如何执行超时 - 您是否使用NUnit [Timeout]属性?这应该触发重试。如果你的超时导致了另一种异常,那么你可能需要预料到这一点,而不是“断言它不会发生”#39;你可以这样做,断言相关的行不会抛出任何异常,例如

string toFetch;
Assert.That(() => { toFetch = FetchMyString(); }, Throws.Nothing);

如果你想在全局范围内做某事,你可能希望实现一个在ResultState.Error上重试的自定义属性,以及ResultState.Failure。看看当前RetryAttribute是如何实现的,这可能会让您知道从哪一个开始。

Retry Attribute Docs