我同樣需要使用VSTest.Console.exe而不是MSTest.exe來編譯VS2012/.NET 4.5 x64應用程序的TFS2010構建過程,同時等待升級到TFS2012開始。
我採取的方法是編輯構建腳本XAML,刪除單元測試的現有工作流程,並將其替換爲構建VSTest.Console.exe參數的自定義工作流程,然後通過以下方式執行VSTest.Console.exe: InvokeProcess。然後,我確保在Finally塊中,無論測試結果如何,我們都會使用構建服務器上的VS2012安裝中的MSTest.exe將測試結果和代碼覆蓋率發佈到TFS。
不幸的是,我不能在回答中發佈XAML,因爲它超過了字符長度,但是我確實有一個文本文件,其中包含要在DefaultTemplate.xaml中替換的代碼段以及用什麼代替它。該文件可以找到here。請注意,雖然這種方法起作用,但它是一種破解。
另一種方法是使用NUnit代替MSTest或VSTest.Console,因爲它支持64位二進制文件。這個article解釋瞭如何將NUnit集成到TFS2010構建腳本中,並鏈接到實現此目的所需的工具和資源。 NUnit的唯一問題是代碼覆蓋率(需要另外一個工具,並且計算出如何將這些結果發佈到TFS)以及使用諸如DeploymentItem和TestContext等屬性的屬性進行MSTest風格的集成測試,這就是爲什麼我選擇工作的原因VSTest.Console.exe方法。
從我讀過的內容可以看出,TFS2012提供了從構建腳本輕鬆集成到VSTest.Console.exe的功能,因此如果您曾經升級到TFS2012,那麼我記錄的VSTest.Console.exe可能不是必需的。
太好了。特別是查找生成的trx文件的部分。謝謝。 – paulroho 2014-07-02 09:05:40
爲什麼'MSTestpath'聲明並從未使用過? '$ TestResDir'在哪裏聲明,它是什麼設置的? – 2016-04-08 07:32:58