Я новичок в TFS и хочу интегрировать OpenCover с TFS. Если кто делал это помогите!
Интеграция OpenCover с TFS
Ответы (4)
Этот вопрос довольно старый, но, возможно, вы все еще заинтересованы. В текущей версии TFS (2015 Update 2) это теперь возможно как «расширение vsts».
Подробнее см. здесь: https://github.com/RobertK66/vsts-opencover
Поскольку в ответе не указана версия TFS, вот ответ на 2015/2017 год.
OpenCover можно запустить из TFS, используя этап сборки Powershell. Вам нужно загрузить содержимое пакета NuGet OpenCover в TFS и запустить оттуда OpenCover.console.exe
.
Поскольку TFS не поддерживает формат, созданный OpenCover, вам необходимо сделать еще один шаг и преобразовать результаты в формат Cobertura. Это возможно с помощью пакета NuGet OpenCoverToCoberturaConverter.
Более подробно я описал весь процесс в своем блоге:
http://codewithstyle.info/setting-up-coverage-reports-on-vsts-with-opencover/
OpenCover — это просто консольное приложение, поэтому вы можете просто изменить свои скрипты, чтобы OpenCover запускал ваши модульные тесты.
Я не использовал TFS в течение нескольких лет, и с тех пор он изменился, однако этот пост в блоге должен помочь
Чтобы включить измерение покрытия OpenCover в процесс сборки TFS (вторая половина)
Оригинал на японском языке, но если вы знакомы с TFS, то экраны, вероятно, будут очевидны.
OpenCover также поставляется с задачей MSBuild, которая может помочь вам в решении ваших задач. интеграция.
Я только что интегрировал opencover с TFS Build, чтобы сгенерировать xml с результатами, которые будут обработаны сонаром:
- Создал RunCoverage.cmd в корне моей исходной папки
- Установил / скопировал на серверы TFS двоичные файлы Opencover и добавил их в путь (необходимо перезапустить службы TFS, чтобы TFS мог их увидеть).
- Created a new actitivity in the build definition, that is, editing the build template (before sonar execution activity) to run the cmd:
Вот содержимое cmd:
@REM @echo suppresses command line. ^ is line continuation character
@ECHO Executing OpenCover...
OpenCover.Console.exe -register:user ^
-target:"C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\MSTest.exe" ^
-targetargs:"/testcontainer:%~dp0test.dll /usestderr /resultsfile:%~dp0MSTestsResults.trx" ^
-output:%~dp0opencovertests.xml
Но я столкнулся с тремя проблемами (которые связаны с моей конкретной реализацией, но вы можете столкнуться с ними):
- Тесты запускаются дважды (один для самого шаблона, другой для OpenCover)
- MsTest.exe на серверах TFS не находится по тому же пути, поэтому, когда контроллер назначает агента (если совпадение выполняется по тегам), то, если агент, выполняющий сборку, находится на сервере TFS, на котором нет MSTest в правильный путь он потерпит неудачу.
- Как внедрить в cmd соответствующий тестовый бегун (MsTest, XUnit, Nunit и т. д.) в зависимости от тестового проекта
Надеюсь, что это поможет! (и кто-то может мне помочь ;-)