2016-04-08 58 views
0

我想創建一個VSTS構建定義,我可以指定vstest.console.exe在包含單詞測試的任何dll上執行。這個定義是:VSTest單獨執行每個dll

**\*test*.dll;-:**\obj\** 

此執行命令像我的倉庫如下:

2016-04-08T20:38:41.4966824Z Executing C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe 
"E:\A\_work\33\s\A\UnitTests\bin\Release\A.UnitTests.dll" 
"E:\A\_work\33\s\A\bin\Release\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll" 
"E:\A\_work\33\s\B\UnitTests\bin\Release\B.UnitTests.dll" 
"E:\A\_work\33\s\B\UnitTests\bin\Release\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll" 
/logger:trx 

我遇到的問題是,DLL的一個&乙雙方在同一個DLL名稱依賴但版本不同,這意味着vstest.console.exe不能同時加載dll,並且這兩種情況之一必然會失敗。

有沒有辦法強制vstest.console.exe爲每個DLL分別加載?我試過/ InInsolation但它沒有解決問題

我知道,通過不同的vstest.console.exe命令單獨執行每個dll都可以,但在VSTS中實現起來很麻煩。我有其他選擇嗎?

回答

1

您可以嘗試使用「並行運行」功能。檢查「Visual Studio Test」步驟中的「Run in Parallel」選項,或使用測試設置文件啓用它。

並行測試執行

在Visual Studio測試平臺引入了支持的測試用例並行執行 。

並行測試執行利用了可用核的機器上, 並且通過啓動每個 可用的核心作爲一個獨特的過程中的測試執行引擎,並交給它的容器 (組件,DLL實現,或包含相關僞影要執行的測試), 值得執行的測試。調度單位是容器的測試 。在每個容器中,測試將按照測試框架的語義按照 執行。如果有許多這樣的容器,那麼隨着過程在一個容器內完成執行測試,它們被交給下一個可用的容器。

參考此鏈接瞭解詳細信息:Parallel Test Execution

然而,在我看來,要做到這一點最簡單的方法是增加在構建定義一個額外的「Visual Studio的測試」步驟。然後,您可以配置一個VSTest任務來執行A.UnitTests.dll和另一個VSTest任務來執行B.UnitTests.dll。