我们的系统有很多依赖项,但是我会尽量总结一下发生了什么,而不会透露太多的细节。
正在执行的是以.dll形式进行的测试程序集。很多这些测试都调用了一个API。
在有问题的方法中,有两个API调用正在等待它们:一个用于向该外部接口写入记录,另一个用于提取所有记录,然后通过API读取该外部接口中的最后一个记录。测试只是检查最后一条记录在端到端的上下文中是否成功,这就是为什么同时存在写和读的原因。
如果我们在Visual中执行测试,一切都按预期工作。我还通过命令lining vstest.console.exe手动测试了它,并且预期的结果也总是显示出来的。
但是,当涉及到VSTS中的VS测试任务时,由于某种原因,它失败了。我们一直在努力找出答案,最终我们从“读”部分打印出了列表。原来,我们插入的最后一条记录不是在我们提取的数据中,但是如果我们通过一种不同的方法检查外部接口,我们就确认了实际发生了写入过程。怎么回事?为什么VSTest变得像一组过时的记录?
我们还注意到两件事:
1.)对于通过的测试,日志中没有一个Console.WriteLine输出。只有在失败的测试中,他们才会这么做。
2.)即使我们的Data.Should.Be调用位于TestMethod的末尾,日志在打印出行之前也会报告失败!,即使这样,在读取记录列表之后,打印也应该发生,但是当打印确实发生时,我们仍然丢失了我们刚刚写的记录。
就像我们在这里漏掉的一样东西吗?在我看来,VSTS vstest确实是在实际代码之前执行断言。但是,TestMethods的顺序是正确的(代码中自上而下编写的第4次测试是第4次执行,而不是第4次到最后一次),我们需要它们按照正确的顺序进行,因为后面的一些测试依赖于先前的测试成功。
我们在这漏掉什么了吗?我会放一个源代码,但如果是这样的话,我需要先清除一些东西。
发布于 2018-07-11 07:27:04
结果,我们严重误解了“等待”所做的事情。我们用.Wait()代替罪魁祸首,还将通过其他测试来检查质量。
https://stackoverflow.com/questions/51277814
复制相似问题