Публикация тестового покрытия нескольких базовых проектов .NET от Azure DevOps до сервера SonarQube. - PullRequest
0 голосов
/ 18 марта 2019

У меня есть ядро ​​.net с двумя тестовыми проектами xunit.Сборка выполняется на конвейере Azure DevOps, и я хочу опубликовать тестовое покрытие на сервере SonarQube (Community).

Я в основном следовал этому сообщению в блоге , и он почти работает, проблемав том, что я вижу только освещение последнего тестового проекта, а не оба.

Возможно, я ошибаюсь, но из этой проблемы я догадался, что мне нужно объединить мои * .coveragexml файлыперед отправкой в ​​SonarQube.

Я видел, что вы можете объединить файлы покрытия с помощью таких инструментов, как Coverlet, но когда я попытался ( на этой странице справки ), у меня возникли некоторые ошибки (например, Не удалось найти файл xunit.runner.reporters,с обычными инструментами или мне нужны другие, как Coverlet ...

Cheers

Ответы [ 2 ]

0 голосов
/ 21 марта 2019

Я наконец нашел проблему.Вам не нужно объединять файлы .coveragexml, последняя версия SonarScanner.MSBuild.exe фактически находит все файлы .coveragexml.Я посмотрел более внимательно в журналах и нашел несколько строк, подобных этим:

INFO: Sensor C# Tests Coverage Report Import [csharp]
INFO: Parsing the Visual Studio coverage XML report [...]
INFO: Adding this code coverage report to the cache [...]
INFO: Parsing the Visual Studio coverage XML report [...]
INFO: Adding this code coverage report to the cache [...]

Таким образом, файлы .coveragexml были найдены и опубликованы для сонара.

Заявленное покрытие было ложным, потому что мне нужно былодобавить

<DebugType>Full</DebugType>

в проект.Странно то, что другие проекты сообщили о некотором покрытии кода без этого свойства, установленного в .csproj, поэтому я подумал, что оно мне не нужно.

Так что, если сообщаемое покрытие кажется ложным, попробуйте добавить это свойство вcsproj.

0 голосов
/ 19 марта 2019

Вот очень хорошая статья о настройке покрытия кода и публикации его на сервере Sonarqube.

https://yuriburger.net/2018/09/10/getting-coverage-reports-with-net-core/

Я предполагаю, что из-за параметра, переданного в dot net test , данные вашего последнего тестового проекта перезаписывают первый тестовый проект. Вы должны убедиться, что все ваши тесты будут выполняться за один раз в одной и той же задаче.

Задача будет как ниже-

enter image description here

Также при подготовке анализа на SonarCloud Это либо задача SonarCloud, либо задача SonarQube. Вы получаете их с рынка. Помимо обычных свойств сонара (проект, ключ, версия) нам нужно предоставить 1 дополнительное свойство в разделе «Дополнительно»:

sonar.cs.vscoveragexml.reportsPaths=$(Agent.BuildDirectory)\TestResults\TestCoverage.xml

Пожалуйста, ознакомьтесь с этим и посмотрите, поможет ли это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...