Ошибка развертывания Salesforce из-за сбоя класса тестирования - PullRequest
0 голосов
/ 07 февраля 2012

Мы сталкиваемся с ошибкой развертывания из-за некоторых тестовых классов, где вызывается пакетный класс apex. Произошла ошибка:

"System.unexpectedException: в методе теста может быть вызвано не более одной executeBatch."

В нашем тестовом классе есть операторы insert и update, которые в свою очередь вызывают пакетный апекс из триггера. Мы также пытались ограничить пакетный запрос с помощью метода «Test.isRunningTest ()», но мы снова сталкиваемся с той же ошибкой.

Код отлично работает в песочнице, и ошибка появляется только во время развертывания в производство.

Кроме того, тестовые классы, вызвавшие ошибку, ранее работали нормально.

Пожалуйста, предоставьте несколько указателей / решение для вышеуказанной ошибки.

Спасибо.

1 Ответ

0 голосов
/ 07 февраля 2012

Я бы предположил, что лучшим подходом было бы убедиться, что триггер не выполняет пакет, если Test.IsRunningTest() равно true, а затем протестировать класс пакета с помощью собственного метода тестирования. Я подозреваю, что ваш триггер сработал дважды, поэтому пакетные экземпляры создаются и запускаются более одного.

Используя специальный метод тестирования, вы можете выполнить пакет, указав ограничение для запроса, и вы должны использовать необязательный параметр размера пакета, чтобы контролировать количество вызовов, которые нужно выполнить, т.е. если ваш лимит равен 50, но вы делаете это:

Database.executeBatch(myBatchInstance, 25);

Все равно нужно будет дважды вызвать метод execute(), чтобы охватить все записи, и именно здесь вы столкнетесь с проблемами, подобными той, которую вы упомянули.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...