Вопрос или проблема
Используя проект автоматизации на Java, я пытаюсь выполнить кодовое покрытие на проекте dotnet. У меня это сработало на Windows OS с помощью dotnet-cover.
Этапы следующие:
dotnet-coverage collect -id test1 -f cobertura "dotnet run"
- Подождите, пока выполнение завершится успешно.
- Запустите некоторые тесты из TestNG (это работает локально).
- Выключите его: dotnet-coverage shutdown test1
- Сгенерируйте отчет, запустив
reportgenerator.exe -reports:"output.cobertura.xml" -targetdir:"coveragereport" -reporttypes:Html
- Проблема в том, что я пытаюсь сделать то же самое на macOS, чипсет M1 (arm64), и это не работает.
Я пытался воспроизвести этот процесс без успеха. Когда я выключаю, я получаю следующее сообщение:
Нет данных о кодовом покрытии. Профайлер не был инициализирован.
Я решил попробовать другой способ после часов, потраченных на поиск решения. Поэтому я попробовал командную строку dotCover (JetBrains).
dotnet-dotcover cover \
--output="/Users/username/repos/CodeCoverage/output.coverage" \
--TargetExecutable="/usr/local/share/dotnet/dotnet" \
--TargetArguments="exec /Users/username/repos/CodeCoverage/bin/Debug/net8.0/CodeCoverage.dll" \
--WorkingDir="/Users/username/repos/CodeCoverage"
Это не работает для меня.
В итоге, вот что я пытаюсь сделать:
- Запустить приложение .NET Core.
- Запустить автоматизацию TestNG.
- Выключить приложение .NET после завершения тестов.
- Сгенерировать отчет о покрытии.
Есть идеи?
Ответ или решение
Для выполнения анализа кода покрытия в проекте .NET Core с использованием Java-автоматизации и TestNG на macOS с чипом M1 (arm64), вам необходимо пройти через несколько шагов, которые могут отличаться от тех, что вы использовали на Windows. Ниже я предоставлю вам полное руководство, которое может помочь решить вашу проблему.
Шаги для выполнения кода покрытия на macOS с использованием .NET и TestNG
-
Убедитесь, что ваши инструменты установлены корректно:
- Убедитесь, что у вас установлены все необходимые инструменты:
.NET SDK
,dotnet tools
иdotCover
, а такжеJava
иTestNG
.
- Убедитесь, что у вас установлены все необходимые инструменты:
-
Настройте проект .NET для анализа покрытия кода:
- Убедитесь, что ваш проект .NET настроен для использования инструмента покрытия кода. Для этого выполните команду:
dotnet add package coverlet.collector
- Убедитесь, что ваш проект .NET настроен для использования инструмента покрытия кода. Для этого выполните команду:
-
Запустите сбор данных о покрытии:
- Используйте команду для сбора данных о покрытии, аналогичную той, что вы использовали на Windows. Например:
dotnet test --collect:"XPlat Code Coverage"
- Если в вашем случае это не работает, попробуйте следующие параметры:
dotnet test --collect:"XPlat Code Coverage" --settings coverlet.runsettings
- Убедитесь, что
coverlet.runsettings
файл содержит правильные настройки.
- Используйте команду для сбора данных о покрытии, аналогичную той, что вы использовали на Windows. Например:
-
Запустите ваше Java-приложение с тестами TestNG:
- Вам нужно будет запустить ваши тесты TestNG, которые должны взаимодействовать с вашим .NET приложением. Убедитесь, что вы правильно конфигурировали тесты и они обращаются к правильно работающему .NET приложению.
-
Остановите приложение .NET после выполнения тестов:
- Чтобы корректно завершить работу вашего .NET приложения после выполнения всех тестов, убедитесь, что вы вызываете shutdown команду, как вы это сделали на Windows:
dotnet-coverage shutdown <идентификатор>
- Если вы получаете сообщение об отсутствии данных о покрытии, возможно, вам следует удостовериться, что приложение правильно запущено и не было завершено некорректно.
- Чтобы корректно завершить работу вашего .NET приложения после выполнения всех тестов, убедитесь, что вы вызываете shutdown команду, как вы это сделали на Windows:
- Генерация отчета о покрытии:
- Используйте
reportgenerator
, чтобы сгенерировать отчет о покрытии после завершения тестов. Если вы используетеdotCover
, убедитесь, что вы указали правильные параметры для генерации отчета:dotnet dotcover report \ --Source="/Users/username/repos/CodeCoverage/output.coverage" \ --ReportType=HTML \ --Output="/Users/username/repos/CodeCoverage/coverageReport.html"
- Используйте
Примечания:
- Если вы продолжаете получать ошибки, попробуйте использовать
dotCover
как временное решение на macOS, убедившись, что вы указываете правильные аргументы в командной строке; это важно, так как синтаксис может отличаться на различных платформах. - Запустите все команды из домашней директории вашего проекта, чтобы избежать проблем с путями.
- Также проверьте, все ли зависимости и инструменты поддерживают обрабатываемую вами архитектуру (arm64) на macOS.
Следуя этим шагам, вы сможете выполнить анализ покрытия кода вашего .NET Core проекта с помощью Java автоматизации на macOS. Если проблема сохраняется, рекомендую проверить документацию использованных инструментов или обратиться в сообщество для получения более детализированной помощи.