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

Azure devops VSTS测试失败,但vstest.console通过;由于某种原因,断言在代码之前执行?,azure-devops,vstest,vstest.console.exe,visual-studio-test-runner,vstest.console,Azure Devops,Vstest,Vstest.console.exe,Visual Studio Test Runner,Vstest.console,我们的系统有很多依赖项,但我会尽量总结一下发生了什么,不会透露太多细节 正在执行的是.dll形式的测试程序集。很多这样的测试都调用API 在有问题的方法中,有两个API调用具有等待:一个用于将记录写入该外部接口,另一个用于提取所有记录,然后通过API读取该外部接口中的最后一个记录。测试只是检查在端到端上下文中写入最后一条记录是否成功,这就是为什么既有写入,又有读取 如果我们在VisualStudio中执行测试,一切都会按预期进行。我还通过命令行vstest.console.exe手动测试了它,预

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

正在执行的是.dll形式的测试程序集。很多这样的测试都调用API

在有问题的方法中,有两个API调用具有等待:一个用于将记录写入该外部接口,另一个用于提取所有记录,然后通过API读取该外部接口中的最后一个记录。测试只是检查在端到端上下文中写入最后一条记录是否成功,这就是为什么既有写入,又有读取

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

然而,在VSTS中,当涉及到VS测试任务时,由于某种原因它失败了。我们一直在努力找出答案,最终我们达到了打印“阅读”部分列表的地步。事实证明,我们插入的最后一条记录不在我们提取的数据中,,但是如果我们通过不同的方法检查外部接口,我们确认写入过程确实发生了。有什么好处?为什么VSTest越来越像一组过时的记录

我们还注意到两件事:

1.)对于通过的测试,日志中未显示任何Console.WriteLine输出。只有在测试失败时,他们才会这样做

2.)即使我们的Data.Should.Be调用在TestMethod的最后,日志在打印行之前会报告失败即使这样,打印也应该在读取记录列表后进行,但是当打印发生时,我们仍然缺少我们刚才写的记录

这里有没有从下到上的东西我们错过了?在我看来,VSTS-vstest实际上是在实际代码之前执行断言。TestMethods的顺序是正确的(代码中自上而下编写的第四个测试是从第四个测试执行的,而不是从第四个测试执行到最后一个测试),我们需要它们以正确的顺序执行,因为后面的一些测试依赖于前面的测试


我们这里缺什么?我想写一段源代码,但如果是这样的话,有很多事情我需要先修改。

结果是我们严重误解了“等待”的作用。我们将使用.Wait()代替罪犯,并将返回其他测试以检查质量。

由于您的问题已经解决,您可以通过单击标记答案√ 答案左边的符号。