2016-04-28 196 views
5

我們正在將我們的單元測試從使用MSTest遷移到NUnit(版本3.2.1),但在運行我們的TFS .xaml構建定義中的NUnit測試時遇到問題。 TFS構建定義使用規則「在匹配** \ *。test * .dll的程序集中運行測試」。對於我NUnit測試項目,我已經下載,安裝,並參考了以下的NuGet包:NUnit3測試不運行在TFS構建

1)NUnit的V3.2.1

2)NUnit3TestAdapter v3.0.10

內VS執行我的測試(測試瀏覽器)完美地工作,我認爲這些步驟足以確保它們也作爲CI構建TFS的一部分運行,但是測試從未執行。在診斷輸出中,我沒有與這些測試有關的錯誤/警告/消息,但是我確實發現構建過程已經將我的程序集檢測爲單元測試的候選者,因爲它與上述通配符規則相匹配(** \ *。test * .DLL)。

我也嘗試把NUnit3TestAdapter程序集放在TFS的構建控制器屬性中定義的「定製程序集的版本控制路徑」文件夾中,但無濟於事。

任何人都可以看到我是否缺少這裏的過程中的一個步驟。從我在這些論壇上讀到的所有內容中,我似乎已經做了所有必要的事情,但他們仍然沒有執行。

我通過在包含我的NUnit測試的程序集上直接運行MSTest,exe(這是TFS構建使用的),我大大簡化了這個問題。有問題的程序集將適配器和nunit框架都安裝爲NuGet程序包,並且MsTest仍報告沒有找到任何測試(請參閱下文):

C:\ Users \ hdav>「C:\ Program Files(x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ MSTest.exe「/testcontainer:e:\MyCode\nunit\ExpectedExceptionExample\bin\Debug\ExpectedExceptionExample.dll

正在載入e:\ MyCode \ nunit \ ExpectedExceptionExample \ bin \ Debug \ ExpectedExceptionExample.dll ...

開始執行...

沒有要執行的測試。

+0

你能分享你的構建日誌嗎?您是否能夠在構建過程中看到TestAdapter恢復? –

+0

我無法真正與你共享生成日誌,但是你能否通過看到TestAdapter「恢復」來詳細說明你的意思?我假設你的意思是NUnit3.TestAdapter.dll,如果是這樣,那麼是的,我看到構建日誌中的以下行:「將映射從'$/TFSAdministration/BuildProcessTemplates/CustomAssemblies/NUnit3.TestAdapter.dll'添加到.... ..「 – davies

+0

當使用'MsTest'運行測試時,只會執行舊樣式的MsTest項目。要加載新的可擴展測試運行器,您必須*執行'vstest.console.exe'。 – jessehouwing

回答

0

我遇到了同樣的問題,並且發現測試項目的pbd文件需要存在才能使適配器發現測試。

雖然.pbd文件是在本地生成的,但版本(本例中爲TF Build)正在將/p:DebugType=None切換提供給MSBuild參數。移除開關可以發現測試並在構建中運行。你可以在你的構建定義中有類似的東西嗎?

該問題已在GitHub上被接受爲bug

相關問題