2014-10-29 50 views
9

我正在拼凑一个新的堆栈的单元测试作为一个CI作业一起运行。我使用的是vstest.console.exe而不是mstest.exe,主要是因为它能够从几个框架运行测试,但现在焦点是几个xUnit dll。这些工作是作为詹金斯管道的一部分运行的。没有发现由vstest.console.exe xunit测试

我已经在几个开发框中成功测试了一切,但令人讨厌的测试发现目前还没有在任何CI构建框上工作。这是在添加了0.99.8 xUnit测试适配器vsix之后(也用0.99.7测试的)。 xUnit dll是使用xUnit的2.0.0.2378 beta nuget版本构建的。

我已经用最简单的dll重现了症状,使用单个公共测试方法,可以在我自己的盒子上正常工作,而不是在任何构建盒上工作。部署环境非常简单,在Windows 2012上安装了VS2012安装和xUnit测试适配器。

我已经通过vstest exe配置文件启用了TpTrace日志记录,并且一切都很正常。我想我正在寻找一种方法来进一步解决问题(可能追踪xUnit发现过程)或解决问题的方法。我宁愿保留使用vstest控制台来简化运行几个框架。

我也通过xUnit codeplex网站写过这个问题。

我已经检查了这个SO post但是没有一个建议的解决方案在这里有意义。

回答

4

好,所以问题解决了,但经过一些令人沮丧的故障排除,我会覆盖以防万一它对某人有用。问题在于,xunit.execution.dll在与包含测试的dll相同的文件夹中不可用。这是xunit发现所必需的。我只是来到这里:

  • 设置HKCU \ SOFTWARE \ Outercurve基金会\ xUnit.net \ Visual Studio的测试插件\ MessageDisplay =诊断(这应该通过runsettings文件可行,但没有被拾起,而不是通过的xUnit页面,因为它无法打开)
  • 现在vstest吐出来“跳绳xunitTests.dll(没有提及xUnit.net)”的VS工具的选项可能
  • 此消息实际上意味着xunit.dll和xunit.execution .dll文件夹中找不到

问题解决d通过确保dll被复制到构建框上的该文件夹中。

21

我花了相当长的一段时间来找到如何使用vstest.console.exe和的xUnit为VS2013的解决方案,所以我认为它值得花时间我怎么没给大家在这里解释...

第一步按照解释here在xunit项目中安装pre-release xunit.runner.visualstudio nuget包,这需要它能够从Visual Studio运行xunit测试。

然后,当您运行您的vstest.console.exe命令时,您需要使用参数/TestAdapterPath

你的命令行看起来应该像什么(朝的xUnit适配器的路径是这里相对的话,你可以把它在绝对或调整取决于活动目录):

"C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" c:\path\to\your\assembly.to.test.dll /TestAdapterPath:".\packages\xunit.runner.visualstudio.0.99.9-build1021\build\_common\" 

编辑:由于适配器dll被复制到输出文件夹,我们可以简化提供路径“”的命令行。到/TestAdapterPath选项:

"C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" c:\path\to\your\assembly.to.test.dll /TestAdapterPath:"." 

的信息,它的工作原理也与NUnit的,NuGet包NUnitTestAdapter和命令:

"C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" c:\path\to\your\assembly.to.test.dll /TestAdapterPath:"." 
+0

我我的情况xunit.runner.visualstudio.testadapter.dll是不可复制的,你知道为什么吗? – frizik 2016-06-28 12:57:04

+0

太棒了! TestAdapterPath使我的mstest测试开始工作。 – Drutten 2017-11-22 12:59:42