【问题标题】:Error trying to run mstest on jenkins尝试在 jenkins 上运行 mstest 时出错
【发布时间】:2014-02-02 11:07:45
【问题描述】:

我正在尝试在 jenkins 上配置 MSTest 构建插件,但出现以下错误:

Path To MSTest.exe: mstest.exe
Result file was not found so no action has been taken. file:/C:/Program%20Files%20(x86)/Jenkins/jobs/SoftwrenchvNext/workspace/TestResult.trx
FATAL: null
java.lang.NullPointerException
    at org.jenkinsci.plugins.MsTestBuilder.perform(MsTestBuilder.java:144)

配置只是将 TestResult.trx 指定为 ResultFileName。此文件没有版本控制,我希望在每次构建时都创建它。

为此需要做什么?

【问题讨论】:

  • 有完全相同的问题。你解决过这个问题吗?

标签: jenkins msbuild mstest


【解决方案1】:

需要注意的另一件事:这不适用于 .NetCore,仅适用于常规 .Net 框架:(请参阅 https://github.com/Microsoft/vstest/issues/1213#issuecomment-338561792https://developercommunity.visualstudio.com/content/problem/238572/mstest-command-line-reports-no-tests-to-run.html

我在 Jenkins 中使用了类似于以下代码的批处理作业:

dotnet test src\Folder\Project.csproj --logger:trx

请在此处找到dotnet test 的完整参考:https://docs.microsoft.com/de-de/dotnet/core/tools/dotnet-test?tabs=netcore21

【讨论】:

    【解决方案2】:

    最后我放弃了通过简单面板配置 MSTest - 它找不到测试 dll,所以像上面的人一样,我使用了批处理命令。我在下面添加了我的批处理命令,因为它解决了以前答案的一些问题,他们没有考虑到您必须在每次运行之前删除 .trx 文件,或者给它一个唯一的名称,否则测试将失败。

    这是我在 Jenkins 中作为批处理命令运行的解决方案:

    "C:Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/MSTest.exe" /resultsfile:"%WORKSPACE%/MyAppTest_%BUILD_NUMBER%.trx" /testcontainer:"%WORKSPACE%/Components/ebox2/Central/MyApp/MyAppWeb/trunk/MyAppTest/bin/Release/MyAppTest.dll" /nologo /category:Build
    

    请注意 .trx 文件名中包含 %BUILD_NUMBER%,这可以解决由于 .trx 文件重复而导致作业失败的问题。

    另请注意,/category:Build 允许您选择所需的测试。您自己在测试中设置类别:

    [TestCategory("Build"), TestMethod()] 
    

    我之所以使用它,是因为我有一些 Selenium 测试,但我还没有弄清楚如何在 Jenkins 中运行,或者这是否可能。

    【讨论】:

      【解决方案3】:

      我也有同样的错误信息!

      我的建议是替换“使用 MSTest 运行单元测试”步骤。使用“执行 Windows 批处理命令”步骤。这对我有用。

      命令

      del TestResults.trx
      "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\MSTest.exe" /testcontainer:Example.Tests\bin\Debug\Example.Tests.dll /resultsfile:TestResults.trx
      

      使用此技术,您仍然可以使用“发布 MSTest 测试结果报告”步骤指定...

      测试报告TRX文件

      TestResults.trx
      

      祝你好运!

      此外,您可以使用“EXIT”调用“模拟”“继续失败的测试”功能,如下所示。

      del TestResults.trx
      "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\MSTest.exe" /testcontainer:Example.Tests\bin\Debug\Example.Tests.dll /resultsfile:TestResults.trx /nologo
      EXIT /B 0
      

      【讨论】:

      • Jenkins 的 MSTest 插件不支持工作空间路径中的空格。
      • 如果为真,那就太愚蠢了,因为默认安装路径有空格。
      • 在开发插件时您要做的第一件事是创建包含空格的目录来测试该场景。 (好吧,也许是第二个或第三个,但你确实会在这里和那里用一些空格来测试它)。天哪,路易丝。回到命令行。 :(
      • 我冒昧地增强了答案。我希望没问题。
      【解决方案4】:

      经过一番调查,我能够通过执行以下操作让 MSTest 在 Jenkins 中工作:

      选择管理 Jenkins

      从管理 Jenkins 中选择配置系统

      在配置系统中,您需要找到 MSTest 并添加您的 MSTest 配置

      输入您认为合适的配置。我的显示如下:

      保存配置,然后转到您的构建项目并配置适当的项目,如下所示:

      需要注意的一点是,我没有遵循作者网站上列出的任何步骤,因为它们对我来说似乎没有任何意义。然而,我确实阅读了代码并花了一些时间挖掘并意识到缺少的部分在 Jenkins 的配置系统页面中。

      干杯!

      【讨论】:

      • 也为我工作。现在我需要弄清楚为什么 Jenkins 忽略了我的测试类别。
      猜你喜欢
      • 2013-01-24
      • 1970-01-01
      • 2016-08-09
      • 1970-01-01
      • 1970-01-01
      • 2018-01-01
      • 2021-07-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多