在VSTS中运行xunit.net测试

Sze*_*eki 8 c# build-automation xunit azure-devops

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

2017-03-21T12:11:39.3302859Z ## [section]开始:测试装配
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.3382932 Z版本:1.0.84
2017-03-21T12:11:39.3382932Z作者:微软公司
2017-03-21T12:11:39.3382932Z帮助:更多信息
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.8520939 Z执行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这个项目的文件是这样的:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  ...
  <package id="xunit" version="2.2.0" targetFramework="net45" />
  <package id="xunit.abstractions" version="2.0.1" targetFramework="net45" />
  <package id="xunit.assert" version="2.2.0" targetFramework="net45" />
  <package id="xunit.core" version="2.2.0" targetFramework="net45" />
  <package id="xunit.extensibility.core" version="2.2.0" targetFramework="net45" />
  <package id="xunit.extensibility.execution" version="2.2.0" targetFramework="net45" />
  <package id="xunit.runner.msbuild" version="2.1.0" targetFramework="net45" />
  <package id="xunit.runner.visualstudio" version="2.2.0" targetFramework="net45" developmentDependency="true" />
</packages>

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

Adr*_*eer 12

只是对此的更新,因为我最近也遇到了这个问题,无法让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输出文件

  • Upvoted,因为这救了我.只是缺少一步:选择.NET Core版本,因为它默认为"1.*". (2认同)

bas*_*der 7

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

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

但这仅适用于包含实际测试的程序集,您正在测试的项目仍然可以针对.NET 4.5.在我的情况下,我只是将我的测试程序集切换到目标.NET 4.5.2,但所有其他项目仍然以.NET 4.5为目标,并且它运行良好.