【问题标题】:Running xunit.net tests in VSTS在 VSTS 中运行 xunit.net 测试
【发布时间】:2017-08-13 03:04:09
【问题描述】:

我在 VSTS 中运行 xunit.net 测试时遇到问题。运行构建计划时,Test assemblies 步骤会生成以下日志:

2017-03-21T12:11:39.3302859Z ##[部分]开始:测试程序集
2017-03-21T12:11:39.3382932Z ======================================== =======================================
2017-03-21T12:11:39.3382932Z 任务:Visual Studio 测试
2017-03-21T12:11:39.3382932Z 描述:使用 Visual Studio 测试运行程序运行测试
2017-03-21T12:11:39.3382932Z 版本:1.0.84
2017-03-21T12:11:39.3382932Z 作者:微软公司
2017-03-21T12:11:39.3382932Z 帮助:More Information
2017-03-21T12:11:39.3382932Z ======================================== =======================================
2017-03-21T12:11:39.3493151Z 准备任务执行处理程序。
2017-03-21T12:11:44.9245238Z 执行 powershell 脚本:D:\a_tasks\VSTest_ef087383-ee5e-42c7-9a53-ab56c98420f9\1.0.84\VSTest.ps1
2017-03-21T12:11:46.6530959Z 测试容器:'REGISTRY::HKEY_CLASSES_ROOT\CLSID{177F0C4A-1CD3-4DE7-A32C-71DBBB9FA36D}'
2017-03-21T12:11:46.6530959Z
2017-03-21T12:11:46.6530959Z
2017-03-21T12:11:46.6810971Z 不存在。
2017-03-21T12:11:46.6820975Z
2017-03-21T12:11:46.6820975Z
2017-03-21T12:11:46.8520939Z 工作文件夹:D:\a\1\s
2017-03-21T12:11:46.8520939Z 执行 C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe "D:\a\1\s\ Common.Tests\bin\Release\MyClassLibrary.Tests.dll" /Settings:"C:\Users\buildguest\AppData\Local\Temp\tmp89AE.tmp" /EnableCodeCoverage /logger:trx /TestAdapterPath:"D:\a\ 1\s"
2017-03-21T12:11:47.2730887Z Microsoft (R) 测试执行命令行工具版本 14.0.25420.1
2017-03-21T12:11:47.2740881Z 版权所有 (c) Microsoft Corporation。保留所有权利。
2017-03-21T12:11:47.2740881Z
2017-03-21T12:11:47.7430814Z 开始测试执行,请稍候...
2017-03-21T12:12:01.0768912Z 警告:[xUnit.net 00:00:01.1926376] 跳过:MyClassLibrary.Tests(找不到以下任何程序集:xunit.execution.desktop.dll)
2017-03-21T12:12:01.0768912Z
2017-03-21T12:12:01.1458970Z 警告:D:\a\1\s\Common.Tests\bin\Release\MyClassLibrary.Tests.dll 中没有可用的测试。确保已安装的测试发现器和执行器、平台和框架版本设置正确,然后重试。

这个项目的packages.config 文件是这样的:

... 包>

Test assemblies 构建步骤中使用的值:

执行选项

测试程序集:**\*Tests.dll;-:**\obj\**
启用代码覆盖:true

高级执行选项

VSTest:Version
VSTest版本:Latest

自定义适配器的路径为空,但工具提示指出 Nuget restored adapters are automatically searched for.

报告选项

平台:$(BuildPlatform)
配置:$(BuildConfiguration)

所以(在我看来)它似乎可以找到正确的文件(MyClassLibrary.Tests.dll),但没有选择测试方法(标记为[Fact][Theory])。

有人知道我做错了什么吗?

更新

解决方案中的所有项目都是.NET 4.5

【问题讨论】:

  • 包含针对 .NET Framework 版本
  • @bassfader 我更新了问题
  • 这看起来像原因:2017-03-21T12:12:01.0768912Z 警告:[xUnit.net 00:00:01.1926376] 跳过:MyClassLibrary.Tests(找不到任何以下程序集:xunit.execution.desktop.dll)

标签: c# azure-devops build-automation xunit


【解决方案1】:

我在切换到 xUnit 后遇到了同样的问题,经过大量的反复试验和搜索后,我发现 xUnit 测试运行器只能在面向 .NET 4.5.2 或更高版本的程序集中运行,否则它无法加载(因此无法找到测试)。

这里的文档有点模糊,因为Getting Started with xUnit 指南并没有真正提到这一点,它只提到创建一个新的类库项目“面向.NET 4.5.2(或更高版本)”。

但这仅适用于包含实际测试的程序集,您正在测试的项目仍然可以针对 .NET 4.5。在我的例子中,我只是将我的测试程序集切换到了 .NET 4.5.2,但所有其他项目仍然以 .NET 4.5 为目标,而且效果很好。

【讨论】:

  • 啊,确实。 xunit.extensibility.core 依赖于 .NET 4.5.2。太糟糕了,由于原因,我无法更改目标框架(即使是测试项目...)。所以我不得不忍受降级 xunit。
【解决方案2】:

只是对此的更新,因为我最近也遇到了这个问题,无法让 VsTest 运行程序发现我的 .net Core 2.0 xunit 测试。

注意:VsTest 运行程序在我的机器上本地运行良好,但不能从 VSTS 运行 - 即使 xunit 测试适配器在那里。

无论如何,改用 .NET Core 构建任务 - 它非常易于使用。基本上:

  1. 添加 .Net Core 构建任务(预览 atm)
  2. 选择所需的 .NET Core 版本
  3. 将命令更改为测试
  4. 为您的测试项目添加一个或多个路径 - 例如**/*Tests.csproj
  5. 任何其他参数 - 例如 --filter "Category!=Integration"
  6. 还有一个发布测试结果选项,可以创建 trx 输出文件

【讨论】:

  • 赞成,因为这救了我。只是缺少一个步骤:选择 .NET Core 版本,因为它默认为“1.*”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-27
  • 2010-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-16
相关资源
最近更新 更多