2014-10-29 53 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