我有使用xUnit.net设置的集成测试.
有没有办法配置集成测试应该持续多长时间?我是指一个门槛.
不幸的是,在较新的版本中,Fact属性看起来不再具有 Timeout参数
看来,你要找的是属性的Timeout
参数Fact
.
欲了解更多信息,请参阅的xUnit文档下确保了测试并不太长的.
对于较新的xunit版本,我使用的方法似乎运行良好:
public static class AssertAsync { public static void CompletesIn(int timeout, Action action) { var task = Task.Run(action); var completedInTime = Task.WaitAll(new[] { task }, TimeSpan.FromSeconds(timeout)); if (task.Exception != null) { if (task.Exception.InnerExceptions.Count == 1) { throw task.Exception.InnerExceptions[0]; } throw task.Exception; } if (!completedInTime) { throw new TimeoutException($"Task did not complete in {timeout} seconds."); } } }
您可以像这样使用它:
[Fact] public void TestMethod() { AssertAsync.CompletesIn(2, () => { RunTaskThatMightNotComplete(); }); }
但是,请务必先阅读之所以将其删除的原因,因为该项目的维护者之一确实对可能导致测试运行死锁的问题提出了一个很好的观点.我在单线程模式下运行这些测试,但似乎不会导致问题.