Batch file 使用批处理(bat)使用MSTest执行多个.dll

Batch file 使用批处理(bat)使用MSTest执行多个.dll,batch-file,jenkins-pipeline,mstest,Batch File,Jenkins Pipeline,Mstest,目前,我们正在建立Jenkins管道,在建立管道的同时,我们发现我们需要一些bat脚本。但现在我不知道更多了。我们有一个包含所有单元测试的文件夹(大约27.dll,总共1788个测试) 示例路径: 我们希望执行all.dll并定义一个质量门(这意味着需要通过所有测试),以下工作: "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\MSTest.exe" "/testcontainer:D:\Je

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

示例路径:

我们希望执行all.dll并定义一个质量门(这意味着需要通过所有测试),以下工作:

"C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\MSTest.exe" "/testcontainer:D:\Jenkins\Pipeline\trunk\Binaries\Unittests\SculiWebServiceTest.UnitTests\SculiWebServiceTests.dll"
但是如果您添加了更多/testcontainer,我们会得到一个错误“指定的路径、文件名或两者都太长。完全限定的文件名必须少于260个字符,目录名必须少于248个字符。”


已经阅读了这篇文章,但它没有帮助我“”,这里有人有解决方案吗?

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

例如:

"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

如果使用批处理,请小心不要在不同的测试容器之间使用enter。

有这么多测试,您迟早会遇到命令行长度限制。您可以在批处理或powershell脚本中运行循环,将所有DLL逐个传递给MSTest。
"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