sfdx force:apex:test:run включает покрытие только для тех тестов, которые включены в команду sfdx

У меня есть организация, которая имеет около 530 тестовых классов. В настоящее время я работаю над проектом nodejs, который использует команды sfdx для запуска тестов в организации, а затем создает отчет о покрытии кода, анализирует и классифицирует их, чтобы я мог использовать классифицированные данные чтобы узнать, какие строки классов вершины покрываются какими тестовыми классами / методами.

Поскольку количество тестовых классов очень велико, а Salesforce удаляет данные о покрытии, если количество записей превышает 10 КБ (что происходит из-за такого большого количества классов, триггеров и тестовых классов), я попытался реализовать пакеты тестов для запуска.

Допустим, пакет состоит из Test_1,Test_2,.....,Test_10. Команда, которую я использую, приведена ниже.

sfdx force:apex:test:run --codecoverage -r json --classnames "Test_1,Test_2,.....,Test_10" -u testOrg --outputdir path/to/folder

Проблема здесь в

  1. Команда блокирует скрипт до тех пор, пока тест не будет завершен и не будет рассчитано общее покрытие.
  2. после завершения testRunId не возвращается.
  3. при каждом последующем запуске в выходные данные также включаются данные о предыдущем тестовом покрытии, которые не требуются.

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

2 ответа

Попробуйте разделить его на несколько команд, что вы получите таким образом?

  1. Блокировка скрипта каждый раз делается для малого юнита
  2. Результат может быть сохранен и проанализирован отдельно для каждого теста класса

3. Предыдущие данные о тестовом покрытии НЕ включаются в выходные данные. каждая команда вычисляет покрытие своего тестового кода

       sfdx force:apex:test:run --codecoverage -r json --classnames "Test_1" -u testOrg --outputdir path/to/folder/Test_1

sfdx force:apex:test:run --codecoverage -r json --classnames "Test_2" -u testOrg --outputdir path/to/folder/Test_2

sfdx force:apex:test:run --codecoverage -r json --classnames "Test_10" -u testOrg --outputdir path/to/folder/Test_10

Не знаю, актуально это еще или нет, но решение есть.

Вы можете перезаписать значение переменной среды SFDX_MAX_QUERY_LIMIT и получить все необходимые записи.
Из https://developer.salesforce.com/docs/atlas.en-us.sfdx_setup.meta/sfdx_setup/sfdx_dev_cli_env_variables.htm:
SFDX_MAX_QUERY_LIMIT
Максимальное количество записей Salesforce, возвращаемых командой CLI.
Значение по умолчанию — 10 000.
Пример:
SFDX_MAX_QUERY_LIMIT=200000

Другие вопросы по тегам