tl; др
Привет!Я пытаюсь выяснить, что такое покрытие кода для нашего приложения Xamarin (Xamarin.Android), разработанного с использованием MvvmCross с Visual Studio Community 2017 в Windows 10 .
Описание
Мы уже пытались сделать это дважды:
- Первый раз, когда мы создали проект MSTest, в котором мы смогли запустить Test Explorer в Visual Studio, а также использовать SonnarQube для экспорта результатов.Хотя мы могли проверять дублирование кода, ошибки, уязвимости и запахи кода, SonarQube просто не сообщает о покрытии кода.
Мы поняли, что это потому, что проекты Xamarin используют .NET Standard вместо .NET Frameworkи SonarQube поддерживает только .NET Framework.Затем мы нашли эту ссылку с решением для Mac, которое я цитирую:
Похоже, лучшее решение, с которым мы столкнулись, - это скомпилировать тесты в исполняемый файл с NUnitLite.затем запустите программу профилирования журнала, mprof-report и ReportGenerator, чтобы сгенерировать окончательные HTML-файлы:
например,
mono --debug --profile=log:coverage,covfilter=+MyNamespace,covfilter=-NotMyNamespace,output=coverage.mlpd MyTests.exe --noresult
mprof-report --reports=coverage --coverage-out=coverage.xml coverage.mlpd
mono ./packages/ReportGenerator.2.5.6/tools/ReportGenerator.exe -reports:coverage.xml -targetdir:report
firefox ./report/index.htm
- Итак, мы преобразовали наш тестовый проект для использования NUnit.Нам удалось подключить NUnit к Visual Studio с помощью NUnit.Adapter, мы смогли сделать из него исполняемый файл и установить Mono для Windows (x64) из двоичного установщика (* .msi).Когда мы запускаем первую команду, она возвращает результаты тестов, но также выдает ошибку:
Профилировщик 'log' не найден в главном исполняемом файле и не может быть загружениз 'mono-profiler-log'.
Следовательно, выходное покрытие отсутствует.На самом деле, кажется, что mprof-report
также не установлено, даже в командной строке Mono.
Итак, есть ли ЛЮБОЙ способ выяснить, каков охват кода для нашего Xamarin?Проект MvvmCross, учитывая, что мы никоим образом не склонны покупать корпоративные версии программного обеспечения?Если да, то как это можно сделать?