Проведение кодовой проверки в проекте .NET Core с использованием автоматизированного проекта на Java с TestNG

Вопрос или проблема

Используя проект автоматизации на Java, я пытаюсь выполнить кодовое покрытие на проекте dotnet. У меня это сработало на Windows OS с помощью dotnet-cover.

Этапы следующие:

  1. dotnet-coverage collect -id test1 -f cobertura "dotnet run"
  2. Подождите, пока выполнение завершится успешно.
  3. Запустите некоторые тесты из TestNG (это работает локально).
  4. Выключите его: dotnet-coverage shutdown test1
  5. Сгенерируйте отчет, запустив 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"

Это не работает для меня.

В итоге, вот что я пытаюсь сделать:

  1. Запустить приложение .NET Core.
  2. Запустить автоматизацию TestNG.
  3. Выключить приложение .NET после завершения тестов.
  4. Сгенерировать отчет о покрытии.

Есть идеи?

Ответ или решение

Для выполнения анализа кода покрытия в проекте .NET Core с использованием Java-автоматизации и TestNG на macOS с чипом M1 (arm64), вам необходимо пройти через несколько шагов, которые могут отличаться от тех, что вы использовали на Windows. Ниже я предоставлю вам полное руководство, которое может помочь решить вашу проблему.

Шаги для выполнения кода покрытия на macOS с использованием .NET и TestNG

  1. Убедитесь, что ваши инструменты установлены корректно:

    • Убедитесь, что у вас установлены все необходимые инструменты: .NET SDK, dotnet tools и dotCover, а также Java и TestNG.
  2. Настройте проект .NET для анализа покрытия кода:

    • Убедитесь, что ваш проект .NET настроен для использования инструмента покрытия кода. Для этого выполните команду:
      dotnet add package coverlet.collector
  3. Запустите сбор данных о покрытии:

    • Используйте команду для сбора данных о покрытии, аналогичную той, что вы использовали на Windows. Например:
      dotnet test --collect:"XPlat Code Coverage"
    • Если в вашем случае это не работает, попробуйте следующие параметры:
      dotnet test --collect:"XPlat Code Coverage" --settings coverlet.runsettings
    • Убедитесь, что coverlet.runsettings файл содержит правильные настройки.
  4. Запустите ваше Java-приложение с тестами TestNG:

    • Вам нужно будет запустить ваши тесты TestNG, которые должны взаимодействовать с вашим .NET приложением. Убедитесь, что вы правильно конфигурировали тесты и они обращаются к правильно работающему .NET приложению.
  5. Остановите приложение .NET после выполнения тестов:

    • Чтобы корректно завершить работу вашего .NET приложения после выполнения всех тестов, убедитесь, что вы вызываете shutdown команду, как вы это сделали на Windows:
      dotnet-coverage shutdown <идентификатор>
    • Если вы получаете сообщение об отсутствии данных о покрытии, возможно, вам следует удостовериться, что приложение правильно запущено и не было завершено некорректно.
  6. Генерация отчета о покрытии:
    • Используйте 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. Если проблема сохраняется, рекомендую проверить документацию использованных инструментов или обратиться в сообщество для получения более детализированной помощи.

Оцените материал
Добавить комментарий

Капча загружается...