我在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
答案 0 :(得分:11)
只是对此的更新,因为我最近也遇到了这个问题,并且无法让VsTest跑步者发现我的.net Core 2.0 xunit测试。
注意:VsTest运行器在我的机器上本地工作正常,但不是来自VSTS - 即使xunit测试适配器在那里。
无论如何,使用.NET Core构建任务 - 它非常易于使用。基本上是:
答案 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为目标,并且它运行良好。