.net - 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 帐户下运行。
解决方案
我遇到了同样的问题,我只是用这种方式解决:我发现 Jenkins Server 将使用与您构建的机器用户不同的用户执行 cmd。因此,我决定更改 uesr 帐户,使其与我构建的机器用户帐户相同。
- 按赢 + R
- 输入“services.msc”并按回车
- 找到“Jenkins”服务并双击它
- 驱动到“登录”选项卡
- 检查“此帐户”半径按钮
- 输入您的本地帐号和密码
- 应用设置
- 重启 Jenkins 服务
那么,问题就解决了!
希望这个解决方案对你有帮助^^
推荐阅读
- java - 如何恢复 Netbeans main() 日志?
- laravel - 让验证在 laravel 中为地址工作
- jmeter - 我们如何使用 API 的 JSon 响应作为 Jmeter 中另一个 API 的 JSon 主体
- javascript - 如何添加切换按钮等操作来更改列表视图中某些字段的值?
- ssl - 如何在 Windows Server 2016 中安装没有 IIS 的 ssl 证书?
- logging - 在 Wildfly Logger 中使用多个过滤器规格
- amazon-web-services - AWS 多账户 AWS Cloudformation 执行
- javascript - 从嵌套对象创建对象数组
- scala - 无法在 Play/Scala 中打印 LoggerContext
- date - DAX 中的日期逻辑