问题描述
我有很多自动测试。我可以从 Visual Studio 2017 以任何顺序运行它们并且它们可以工作。我正在使用 WebAppDriver、c# 和 Selenium。
当我们从 Dev-Ops 运行测试时,第一个类中的测试有效,但一旦它开始运行另一个类的测试,它们就不起作用。
我的测试是独立的,能够以任何顺序运行,但似乎存在问题。
我不想控制测试运行的顺序,它们应该是独立的,但我确实想知道出了什么问题。
每个测试类都有一个带有设置的 ClassInitialize,用于启动被测系统并将我的驱动程序附加到它。还有一个 Teardown 可以关闭被测系统。
我的问题是,当测试在 dev-ops 中运行时,我如何调试或找出问题所在,从 Visual Studio 2017 运行测试和从 dev-运行测试有什么区别?他们似乎停止工作的操作。
到目前为止,我已经将我的测试设置为从 VS2017 运行,其顺序与 dev-ops 碰巧运行它们的顺序相同。我通过创建播放列表并编辑播放列表文件来设置顺序来做到这一点。我的目的不是控制测试顺序,而只是让 VS2017 模仿 dev-ops 运行测试的顺序。我发现那些按照所选顺序运行的测试在 VS2017 中工作,但在 VS2017 中不起作用从 dev-ops 运行时的顺序相同。
开发运营有什么不同?
解决方法
我得到的解决方案是:
-
在 Dev-Ops -> 发布管道 -> 任务 -> VS 测试 - 自动测试 -> Visual Studio 测试(紫色烧杯图标)中,设置“批量测试 = 基于测试程序集”。
-
在 Visual Studio 中,确保每个测试类都在它自己的项目中,然后将该项目的程序集名称设置为唯一/与该测试类相关(您的解决方案可能需要多个项目)。
-
从 Visual Studio 中删除自动测试并将其重新链接到 dev-ops 测试用例,一次完成 1 个测试。
只有这样,Dev-Ops 才能依次运行 A 类的测试,然后是 B 类的测试等。