使用批处理 (bat) 与 MSTest 一起执行多个 .dll

Execute multiple .dll with MSTest using batch (bat)

目前我们正在构建一个 Jenkins 管道,在构建它的过程中我们发现我们需要一些 bat 脚本。但现在我不知道更多了。我们有一个包含所有单元测试的文件夹(大约 27 个 .dll,总共 1788 个测试)。

示例路径:

D:\Jenkins\Pipeline\trunk\Binaries\Unittests\SculiWebServiceTest.UnitTests\SculiWebServiceTests.dll
D:\Jenkins\Pipeline\trunk\Binaries\Unittests\ExternalServices.UnitTests\ExternalServicesTests.dll
D:\Jenkins\Pipeline\trunk\Binaries\Unittests\ServiceBus.IntegrationTests\ServiceBus.IntegrationTests.dll

并且我们要执行所有.dll并定义一个Quality-Gate(这意味着需要通过所有测试),以下工作:

"C:\Program Files (x86)\Microsoft Visual Studio17\Enterprise\Common7\IDE\MSTest.exe" "/testcontainer:D:\Jenkins\Pipeline\trunk\Binaries\Unittests\SculiWebServiceTest.UnitTests\SculiWebServiceTests.dll"

但是如果你添加更多的/testcontainer,我们会得到一个错误"The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters."

已阅读此 post,但对我没有帮助“wildcard test containers to mstest. exe”,有人有解决方案吗?

我们发现这是一个字符串限制问题,如果您不使用“”,它将起作用。

示例:

"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\MSTest.exe" /testcontainer:D:\Jenkins\Pipeline\trunk\Binaries\Unittests\SculiWebServiceTest.UnitTests\SculiWebServiceTests.dll /testcontainer:D:\Jenkins\Pipeline\trunk\Binaries\Unittests\ExternalServices.UnitTests\ExternalServicesTests.dll /testcontainer:D:\Jenkins\Pipeline\trunk\Binaries\Unittests\ServiceBus.IntegrationTests\ServiceBus.IntegrationTests.dll

如果您正在使用批处理,请注意不要在不同的测试容器之间使用输入。