我的一些测试需要外部资源。它很少,但有时资源会超时超时,并使测试失败。
我可以知道失败原因是否超时,我想让测试第二次机会在完全失败之前运行。
那么,有没有办法在它结束后重新运行测试(在TestCleanup中)?
答案 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/