У меня есть решение Visual Studio 2012 с использованием платформы .NET 4.5. Остальная часть нашей системы разработки - TFS2010. В последнее время некоторые из наших модульных тестов терпят неудачу только на сервере сборки. Пройдя несколько раундов отладки, я смог определить, что причиной неудачных тестов было, скорее всего, из-за того, что версия MSTest используется на сервере сборки. Проверяемые тесты проходят при запуске из VS2012 на моем локальном компьютере и при запуске из VS2012 на фактическом сервере сборки.Выполнение модульных тестов VS2012 от TFS2010 Team Build
Я следовал шаги, описанные в следующих статьях (я не нашел каких-либо полезных статей, непосредственно относящихся к VS2012 и TFS2010) без успеха: Running VS2010 UnitTests project from TFS2008 Team Build и VS2010, TFS 2008 and Unit Tests
На сервере сборки Теперь у меня есть следующие:
- VS2010 SP1 Окончательный установлен
- VS2012 Update 3 установлен
- .NET Framework 4.5 SDK установлен
- Изменен файл Microsoft.TeamFoundation.Build.targets в «C: \ Program Files (86) \ MSBuild \ Microsoft \ VisualStudio \ TeamBuild \" и "C: \ Program Files \ MSBuild \ Microsoft \ VisualStudio \ TeamBuild \", поэтому AssemblyFile атрибут TestToolsTask построить задачу указал на "C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ PrivateAssemblies \ Microsoft.TeamFoundation.Build.ProcessComponents.dll"
у меня есть 2 сборки определения, которые я тестировал с:
- в первом определении сборки я оставил траектория активности заготовки «запустить MS Test», так что затем использует «C: \ Program Files (x86) \ Microsoft Visual Studio 1 0,0 \ Common7 \ IDE»
- В другом определении сборки я изменил "Run MS Test" параметр активности Траектория в "C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE"
Оба строят появляются определения, которые будут строить правильно и с помощью следующей MSBuild.exe: C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ MSBuild.exe
Первая сборка Defintion запускает версию VS2010 от MStest с любыми ошибками, но 5 из прибл. 2030 тестов не удается. Эти тесты не выходит из строя при запуске изнутри Визуального 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 не в состоянии работать с ниже выходом , Если я запускаю эту команду из командной строки на сервере сборки без переключателей, которые вызывают Invalid ошибка переключения затем 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.