重新运行失败的测试

时间:2016-02-22 12:59:39

标签: visual-studio-2015 mstest

我的一些测试需要外部资源。它很少,但有时资源会超时超时,并使测试失败。

我可以知道失败原因是否超时,我想让测试第二次机会在完全失败之前运行。

那么,有没有办法在它结束后重新运行测试(在TestCleanup中)?

1 个答案:

答案 0 :(得分:0)

没有。您必须检查相关单元测试中的超时,并在那里实现重试逻辑。

这个声音比它更复杂。在您的测试方法中,您可以编写自己的重试逻辑,也可以使用Enterprise Library中的某些内容来传递调用,即,如果在您的测试方法中有这样的话:

var result = Instance.PossibleTimeoutMethod();

然后你可以这样做:

[TestMethod, TestCategory("SLOW")]
public void MyTestMethod()
{
    // Arrange (this is not real code, just made for example)
    var retryPolicy = new RetryPolicy{
        attempts = 3,
        timeBetweenAttempts = TimeSpan.FromSeconds(2),
        TimeToWaitBeforeThrowing = TimeSpan.FromSeconds(30)
    }
    ResultType result = null;

    // Act
    retryPolicy.ExecuteAction(() => result = Instance.PossibleTimeoutMethod());

    // Assert
    result.ShouldEqual(expectedResult);
}

企业库可能对你来说太过分了,但这里仅供参考: http://www.c-sharpcorner.com/UploadFile/vendettamit/retrypolicy-using-microsoft-practices-enterprise-library/