首页 > 解决方案 > VSTest.console.exe 在 Jenkins 下运行时生成空的 .coverage 文件

问题描述

我有一个简单的 Jenkins 构建配置,用于 .Net Framework 项目。该项目使用单元测试。

当我在 Jenkins 下使用 VSTestRunner 插件运行测试时,它会生成测试报告 .trx 以及 .coverage 文件。所有测试均已找到并正常运行,但生成的 .coverage 文件始终为空(大小为 10B 且没有覆盖数据)。我试图在 Jenkins 中将该命令作为 Shell Execution 命令提供。但它仍然给出相同的结果,即空的 .coverage 文件。命令是:

"C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" "CompletePathToLibraries.UnitTest.dll" /Enablecodecoverage /InIsolation /Framework:Framework45 /记录器:trx

但是,如果我从 Jenkins 外部运行相同的命令,即通过手动启动命令提示符,它会生成完美的 .coverage 文件,其中包含预期的数据。

系统配置:Windows 10 Pro Jenkins 2.121.2 Visual Studio Enterprise 2017 Jenkins 作为服务安装并在 NT AUTHORITY\SYSTEM 帐户下运行。

标签: .netvisual-studiounit-testingjenkinscode-coverage

解决方案


我遇到了同样的问题,我只是用这种方式解决:我发现 Jenkins Server 将使用与您构建的机器用户不同的用户执行 cmd。因此,我决定更改 uesr 帐户,使其与我构建的机器用户帐户相同。

  1. 按赢 + R
  2. 输入“services.msc”并按回车
  3. 找到“Jenkins”服务并双击它
  4. 驱动到“登录”选项卡
  5. 检查“此帐户”半径按钮
  6. 输入您的本地帐号和密码
  7. 应用设置
  8. 重启 Jenkins 服务

那么,问题就解决了!

希望这个解决方案对你有帮助^^


推荐阅读