【问题标题】:Execute multiple .dll with MSTest using batch (bat)使用批处理(bat)使用 MSTest 执行多个 .dll
【发布时间】:2020-02-25 19:43:21
【问题描述】:

目前我们正在构建一个 Jenkins-Pipeline,在构建它时我们发现我们需要一些 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 Studio\2017\Enterprise\Common7\IDE\MSTest.exe" "/testcontainer:D:\Jenkins\Pipeline\trunk\Binaries\Unittests\SculiWebServiceTest.UnitTests\SculiWebServiceTests.dll"

但是如果你添加更多/testcontainer,我们会得到一个错误“指定的路径,文件名,或两者都太长。完全限定的文件名必须小于260个字符,目录名必须是少于 248 个字符。”

已经阅读了这篇文章,但它没有帮助我“wildcard test containers to mstest. exe”,这里有人有解决方案吗?

【问题讨论】:

  • 有这么多的测试,你迟早会遇到命令行长度限制。您可以在批处理或 powershell 脚本中运行一个循环,以将所有 DLL 一个一个地传递给 MSTest。

标签: batch-file jenkins-pipeline mstest


【解决方案1】:

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

例子:

"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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-31
    • 2016-08-31
    • 1970-01-01
    • 2019-08-29
    • 1970-01-01
    • 2015-05-03
    • 2014-01-23
    相关资源
    最近更新 更多