2015-12-01 2 views
0

Чтобы распространять тесты на другую машину (удаленный путь), мы должны использовать файл .testsettings. В этом файле мы уже настройки для того, чтобы собрать данные тестового покрытия с помощью:Любой способ опубликовать тестовое покрытие Вернуться к серверу TFS?

<DataCollectors> 
    <DataCollector uri="datacollector://microsoft/CodeCoverage/1.0" assemblyQualifiedName="Microsoft.VisualStudio.TestTools.CodeCoverage.CoveragePlugIn, Microsoft.VisualStudio.QualityTools.Plugins.CodeCoverage, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" friendlyName="Code Coverage (Visual Studio 2010)"> 
     <Configuration> 
     <CodeCoverage keyFile="xxx.snk" xmlns=""> 
      <Regular> 
      <CodeCoverageItem binaryFile="xxx.dll" pdbFile="xxx.pdb" instrumentInPlace="true" /> 

Но проблема данные охвата теста никогда не публикуется на сервер TFS. При диагностике процесса сборки, результат теста уже могут быть опубликованы в соответствии с лог сборки:

Results file: d:\Builds\xxxx.trx 
Test Settings: xxx 
Waiting to publish... 
Publishing results of test run xxx.trx to https://tfs.xxx/tfs/xxx... 
Publish completed successfully. 

Кажется, данные покрытия не внутри файла xxx.trx, и сборка не достаточно умен, чтобы выделить их и публиковать. поэтому из резюме сборки мы можем увидеть:

23 modules instrumented - 0% of all code blocks covered 

Есть ли способ, чтобы вручную публиковать такие данные или записать обратно результат тестового покрытия обратно на сервер TFS через некоторую TFS API или кодированную деятельность?

[UPDATE] Когда проверьте файл результата теста, кажется, результат сам по себе уже содержат знания о том, как найти файл .coverage:

<ResultSummary outcome="Completed"> 
    <ResultFile path="VM-TEST01\data.coverage" /> 
    <ResultFile path="VM-TEST02\data.coverage" /> 

Но проблема заключается в MSTest никогда не публиковать их на Сервер TFS!

+0

Предполагая, что вы используете новую систему сборки, шаг VS Test должен делать это автоматически. Однако, если нет, результаты покрытия кода хранятся в файле .coverage. Вам нужно будет включить Code Coverage на этапе сборки. Мой вопрос здесь может помочь (ответьте на него, если сможете!) Http://stackoverflow.com/questions/33752784/tfs-build-2015-not-publishing-test-results – Rodders

+0

Мы не используем новейшую систему сборки по TFS 2015. Основная причина заключается в том, что мы хотим воспользоваться функцией оригинальной, которая может распространять наши тесты на разных машинах или средах с помощью тестового контроллера с несколькими агентами тестирования. – Max

+0

Вы пробовали vstest.console.exe MyTest.dll /logger:TfsPublisher;Collection=http://localhost:8080/tfs/DefaultCollection;TeamProject=MyProject;BuildName=DailyBuild_20121129.1;RunTitle="Проектные тесты с данными покрытия кода "/ EnableCodeCoverage? –

ответ

0

Необходимо
1). открыть определение сборки, перейдите к процесса ->3.Test ->Automated Test -> установите тип настройки прогона возможность быть UserSpecified. 2). Выберите файл .testsettings в определении сборки.

enter image description here

Затем, после того, как новая сборка ставится в очередь, данные покрытия кода, отображенные на Сложение странице Сводка:

enter image description here

+0

Спасибо за ответ. Проблема заключается в следующем: мы определяем использование параметров теста в качестве опции, а внутри файла настроек мы включаем покрытие. Если мы используем «Включить покрытие кода» в качестве опции, мы не сможем использовать файл параметров теста. – Max

+0

@Max, если это так, вам нужно установить «Тип параметров запуска» как «UserSpecified». Обновлен мой ответ выше. –

+0

Спасибо, Вики. Не могли бы вы рассказать, как настроить, чтобы включить покрытие в файл настроек, это то же самое с нашими? – Max

Смежные вопросы