#deployment #salesforce #apex-code
#развертывание #salesforce #apex-код
Вопрос:
В настоящее время мы работаем над Salesforce.com пользовательский проект APEX, который включает в себя множество классов apex, триггеров и страниц Visualforce. У нас также есть множество приложений от AppExchange, которые являются частью системы.
Мы разрабатываем все классы Apex, страницы Visualforce и т.д. в тестовой среде, а затем развертываем их в реальной среде с помощью Eclipse IDE. Что происходит, так это то, что каждый раз, когда мы внедряем изменения в живую среду, все методы тестирования всех классов (включая методы из приложений AppExchange), похоже, выполняются. Таким образом, развертывание простого изменения может в конечном итоге занять пару минут.
Есть ли в apex способ «упаковывать» классы по пространству имен или что-то в этом роде, чтобы при попытке развернуть изменение выполнялись только методы тестирования, относящиеся к этому пакету. Если что-то подобное существует, наше развертывание может произойти намного быстрее.
Комментарии:
1. приходило ли вам в голову, что это дизайн их системы развертывания? Возможно, когда модульные тесты завершаются неудачей, развертывания останавливаются и завершаются сбоем, и это защищает вас от развертывания чего-либо, содержащего ошибки?
Ответ №1:
К сожалению, нет, частичное тестирование развертывания кода apex не проводится, каждое изменение, независимо от того, насколько оно короткое или автономное, запускает полный тестовый запуск. Это, помимо прочего, обеспечивает соблюдение метрик кода (например, минимальное общее покрытие кода)
ИМХО, это оказывается двусторонней монетой, когда дело доходит до обеспечения надежности кода. Когда мы начали использовать apex, все наши тесты были очень полными, выполняя фактическое тестирование кода с большим количеством утверждений и проверок. Затем у нас начались очень-очень длительные сроки развертывания, так что теперь наши тесты выполняют одну-единственную функцию, удовлетворяя минимальному охвату кода, и даже при таком упрощении развертывание чего-либо занимает почти 3 минуты, а мы используем только 20% нашего запаса кода apex. IMHO2, Apex — слишком медленная платформа для кодирования, чтобы проводить такого рода тестирование. Я даже представить не могу, как долго будут выполняться тесты, если мы достигнем 50%-ного допуска, не говоря уже о большем.
Ответ №2:
Это возможно, но вам нужно изучить Apache Ant и взглянуть на Force.com Инструментарий для миграции. Затем вы можете использовать файл сборки, чтобы определить, какие файлы развертываются, а также какие тесты выполняются.
Я занят написанием технического документа, в котором будет затронута эта и другие связанные стратегии разработки… Я опубликую в своем блоге, когда это будет сделано.
Ответ №3:
Если мы используем инструмент миграции apache ant, у нас есть много вариантов развертывания, таких как deployCodeFailingTest, который пропустит тестовые классы, и если вы хотите запускать только определенные тестовые классы, пожалуйста, используйте: что-то похожее на это в ur build.xml
<target name="deployCode">
`<sf:deploy`
username="${sf.username}"
password="${sf.password}"
serverurl="${sf.serverurl}"
deployroot="codepkg">
<runTest>SampleDeployClass</runTest>
</sf:deploy>
</target>
для получения подробной информации, пожалуйста, воспользуйтесь этой ссылкой
http://www.salesforce.com/us/developer/docs/daas/salesforce_migration_guide.pdf
Ответ №4:
Я бы рекомендовал следующий подход:
- Git как репозиторий для всего вашего sf-кода
- дженкинс для развертывания вашего кода как CI / CD
- PMD как статический анализатор кода
- sfdx как метод развертывания в jenkins для deployment.
Обратитесь к начальной ссылке:https://trailhead .salesforce.com/users/strailhead/trailmixes/architect-dev-lifecycle-and-deployment