Как создать покрытие кода для Salesforce локально - PullRequest
1 голос
/ 04 мая 2020

Я занимаюсь разработкой автоматизации для salesforce. Мы поддерживаем код в ORG, а также в GIT.

Я использую интерфейс командной строки Salesforce, и для генерации покрытия кода используется команда "sfdx force: apex: test: run ", который требует наличия кода в ORG. Мы хотим, чтобы задача покрытия кода была независимой. Можно ли локально запускать тестовые классы? Я получил некоторую ссылку на инструмент ANT, но не уверен, поможет ли это. Я в порядке с использованием другого инструмента программирования, а также.

1 Ответ

1 голос
/ 04 мая 2020

Вы можете попробовать запустить развертывание «только для проверки» (если тесты пройдут успешно или не пройдут - все будет отменено, в организации ничего не изменится). Для этого вам все еще нужна организация , здесь нет полностью локального сервера Apex, как вы можете иметь с Python / Java / PHP / C# ...

Обычный шаблон - тратить одну песочницу для этого назовите его «CI» и имейте git перехватчиков фиксации или правильные тестовые развертывания в Azure Devops конвейере, который пытается и проверяет код. Таким образом, вы можете создать систему раннего предупреждения «кто сломал сборку».

https://developer.salesforce.com/docs/atlas.en-us.sfdx_dev.meta/sfdx_dev/sfdx_dev_build_mdapi_staging.htm

упоминает sfdx force:mdapi:deploy --checkonly flag

Если вы хотите использовать «исходные» команды для «чистых» организаций и т. д. c - sfdx force:source:deploy --checkonly.


Редактировать для ответа на комментарий

Да, вы должны иметь возможность чтобы получить покрытие тоже.

"Обычная" команда для запуска тестов принимает параметр -c, аналогичный

sfdx force:apex:test:run -c --resultformat human --outputdir c:\redacted --loglevel error

(...)
=== Apex Code Coverage
ID                  NAME                       % COVERED           UNCOVERED LINES
──────────────────  ─────────────────────────  ──────────────────  ───────────────────────────────────────────────────────────────────────
01p3L0000004OaKQAU  names                     100%
01p3L0000004OaUQAU  redacted                  100%
01q3L0000004CyWQAU  to                        100%
01q3L0000004DM4QAM  protect                   100%
01p3L0000004UZGQA2  the                       94.23076923076923%  16,17,18
01p3L0000004QNRQA2  innocent                  86.04651162790698%  116,119,131,132,146,147,148,149,151,152,153,154,163,164,165,166,202,243
(..)

При проверке развертывания нельзя использовать -c, поскольку она уже псевдоним для --checkonly. Но вы можете сделать это

sfdx force:mdapi:deploy --zipfile myPackage.zip -c --testlevel RunLocalTests -w 1

=== Apex Code Coverage
NAME                       % COVERED  UNCOVERED LINES
─────────────────────────  ─────────  ───────────────────────────────────────────────────────────────────────
names                      86%        116,119,131,132,146,147,148,149,151,152,153,154,163,164,165,166,202,243
redacted                  100%
to                        100%
protect                   100%
the                        94%        16,17,18
innocent                  100%

Total Test Time:  6992.0

Successfully validated the deployment

Я не уверен на 100%, потому что то, что я развертывал здесь, было идентично тому, что уже есть в организации, вам придется попробовать это. Но я не вижу причин, почему это не должно работать. Он должен сообщать о покрытии того, что находится в попытке развертывания, а не того, что уже находится.

...