在VSTS中运行xunit.net测试

时间:2017-03-21 12:32:27

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

我在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.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文件是:

<?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

2 个答案:

答案 0 :(得分:11)

只是对此的更新,因为我最近也遇到了这个问题,并且无法让VsTest跑步者发现我的.net Core 2.0 xunit测试。

注意:VsTest运行器在我的机器上本地工作正常,但不是来自VSTS - 即使xunit测试适配器在那里。

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

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

答案 1 :(得分:6)

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

这里的文档有点模糊,因为Getting Started with xUnit指南并没有真正提到这一点,它只提到创建一个新的类库项目&#34;目标是.NET 4.5。 2(或更高版本)&#34;

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