【发布时间】:2017-12-13 12:33:52
【问题描述】:
我们目前有一个测试前端 api 调用的集成测试。调用是异步的,因此我们强制它,直到调用准备好将结果与我们期望的结果进行比较。
但是,问题在于代码还包含另一个未等待的异步调用。所以我们嵌套了异步调用。这也是导致测试有时成功有时失败(竞争条件)的原因。
目前,我们已通过在代码中添加 Thread.Sleep (10000) 来解决此问题。但是,这不是一个好的解决方案。
代码如下:
[TestMethod]
public void Integration_Test_Example()
{
// Arrange
...
// Act
var request = CreateRequest(@"testfile.xml");
var task = target.SendMessage(request);
Thread.Sleep(10000); // dirty fix
task.Wait();
// Assert
...
}
有人对我们如何最好地解决这个问题有建议吗?
【问题讨论】:
标签: c# integration-testing race-condition