我有一個使用.NET 4.5框架的Visual Studio 2012解決方案。我們的其他開發系統是TFS2010。最近我們的一些單元測試只在構建服務器上失敗。經過幾輪調試後,我可以確定失敗測試的原因很可能是由於構建服務器上使用的MSTest版本。有問題的測試通過從本地機器上的VS2012運行時,以及從VS2012在實際構建服務器上運行。從TFS2010運行VS2012單元測試團隊建設
我按照下面的文章中描述的步驟(我還沒有找到VS2012和TFS2010直接相關的任何有用的文章)沒有成功:Running VS2010 UnitTests project from TFS2008 Team Build和VS2010, TFS 2008 and Unit Tests
在構建服務器我現在有以下幾點:
- VS2010 SP1旗艦版安裝
- VS2012更新3安裝
- .NET 4.5框架SDK安裝
- 在「C:\ Program Files(86)\ MSBuild \ Microsoft \ VisualStudio \ TeamBuild \」和「C:\ Program Files \ MSBuild \ Microsoft \ VisualStudio \ TeamBuild \」中更改了Microsoft.TeamFoundation.Build.targets文件, AssemblyFile的TestToolsTask的屬性建立任務指向 「C:\ Program Files文件(x86)的\微軟的Visual Studio 11.0 \ Common7 \ IDE \ PrivateAssemblies \ Microsoft.TeamFoundation.Build.ProcessComponents.dll」
我有2編譯我已與測試的定義:
- 在第一個構建定義我已經離開了「運行MS測試」活動的空白的刀具路徑所以它然後使用「C:\ Program Files文件(x86)的\微軟的Visual Studio 1 0.0 \ Common7 \ IDE」
- 在其他構建定義我已經改變了 「運行MS測試」 活動的刀具路徑參數設置爲 「C:\ Program Files文件(x86)的\微軟的Visual Studio 11.0 \ Common7 \ IDE」
雙方建立的定義似乎是正確的建設和使用以下MSBuild.exe: C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 \ MSBuild.exe
第一內建確定指標運行VS2010版本的MStest與任何錯誤,但5約。 2030測試失敗。從Visual Studaio 2012被(實際路徑和服務器名稱移除)的命令行的一個示例中運行時,這些測試沒有失敗:
C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe
/nologo /usestderr /searchpathroot:"d:\Builds\xxxxx\Binaries"
/resultsfileroot:"d:\Builds\xxxxx\TestResults" /testcontainer:"d:\Builds\xxxxx.dll"
/testcontainer:"d:\Builds\xxxxx.dll" /publish:"http://xxxxx
/publishbuild:"vstfs:///Build/Build/xxxxx" /teamproject:"xxxxx" /platform:"x86" /flavor:"Debug"
當運行所述第二生成定義MSTest的不與下面的輸出運行。如果我運行從構建服務器上的命令行命令,而不該是造成無效的開關錯誤,則MSTest的運行,並有問題的測試都通過開關:
The MSTestActivity was invoked without a value for Platform or Flavor. The values x86 and Debug were used.
C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\MSTest.exe
/nologo /usestderr /searchpathroot:"d:\Builds\xxxxx\Binaries"
/resultsfileroot:"d:\Builds\xxxxx\TestResults" /testcontainer:"d:\Builds\xxxxx.dll"
/publish:"http://xxxxx" /publishbuild:"vstfs:///Build/Build/xxxxx" /teamproject:"xxxxx"
/platform:"x86" /flavor:"Debug"
Invalid switch "/publish".
Invalid switch "/publishbuild".
Invalid switch "/teamproject".
Invalid switch "/platform".
Invalid switch "/flavor".
For switch syntax, type "MSTest /help"
我已經做了很多的這些運行的建立,但我無法解決問題。還有什麼我缺少的,需要在構建服務器上或構建定義中完成?
對於實際測試失敗他們有共同的是他們比較列表中的對象,但如前所述,他們通過時,從VS2012內運行。