VSTS测试失败,但vstest.console通过;由于某种原因,断言在代码之前执行



我们的系统有很多依赖项,但我会在不透露太多细节的情况下总结一下发生了什么。

正在执行.dll形式的测试程序集。这些测试中有很多调用API。

在有问题的方法中,有两个API调用有一个等待:一个调用将记录写入该外部接口,另一个调用提取所有记录,然后读取该外部接口中的最后一个记录,这两个调用都是通过API进行的。测试只是检查在端到端环境中写入最后一条记录是否成功,这就是为什么同时有写入和读取。

如果我们在VisualStudio中执行测试,一切都会如预期的那样工作。我还通过命令行vstest.console.exe手动测试了它,预期的结果总是出来的。

然而,当涉及到VSTS中的VS测试任务时,由于某种原因,它失败了。我们一直在努力弄清楚,最终我们从"阅读"部分打印出了列表。事实证明,我们插入的最后一条记录不在我们提取的数据中,但如果我们通过不同的方法检查外部接口,我们确认写入过程确实发生了。什么东西?为什么VSTest变得像一组过时的记录?

我们还注意到两件事:

1.(对于通过的测试,没有控制台。WriteLine输出显示在日志中。只有在测试失败时,他们才会这样做。

2.(即使我们的数据。应该Be调用在TestMethod的最后,日志在打印出行之前报告失败即使这样,打印也应该在读取记录列表后进行,但当打印完成时,我们仍然缺少刚才写的记录。

我们这里缺少一个自下而上的东西吗?在我看来,VSTSvstest实际上是在实际代码之前执行断言。不过,TestMethods的顺序是正确的(代码中从上到下写的第四个测试是在第四个而不是从第四个到最后一个执行的(,我们需要它们以正确的顺序进行,因为后面的一些测试取决于前一个测试的成功。

我们这里缺少什么吗?我会放一个源代码,但如果是这样的话,我需要先清理一堆东西

原来我们严重误解了"等待"的作用。我们正在使用。Wait((来查找罪魁祸首,并将返回其他测试以检查质量。

相关内容

  • 没有找到相关文章

最新更新