Это собственно не проблема, а просто рабочая ситуации. Уверен, что она знакома многим из вас.
есть большое рабочее приложение. но время от времени клиенты просят добавить новые ВалРулы, которые делают проверку значений полей. В результате падают старые тесты, которые выполняют ДМЛ оперции с записью, ничего не зная о новых ВалРулам.
Мы не можем запретить БА внедрять новые ВалРулы - это все бизнес процессы.
Но как правильно организовать внедрение новых требований к записям?
Я вижу только один путь:
(1) объяснить проблему БА и попросить их предупреждать тебя каждый раз, когда они внедряют новый ВалРул.
(2) проверять каждый новый ВалРул на то может ли он сломать старые тесты, и по необходимости вносить правки во все старые тесты...
долгий путь, может у вас есть лучшие варианты?
Ну у меня в частности это работает так. Каждой ночью запускаются тесты, а утром присходит в случае падения тестов разбор полетов.
Так же ты можешь мониторить создание чего-лтбо нового через метадату. И соответственно будешь в курсе происходящего еще до падения тестов.
Остальные пути существенно сложнее.
Wilder прав.
Чтобы избежать больших проблем нужно:
- запускать тесты по расписанию (CI/cron + salesforce-ant) с уведомлением о результатах;
- иметь единый класс для создания тестовых данных (DummyDataFactory), т.е. придется править код только в 1 месте;
- использовать View Setup Audit Trail, чтобы вычислить виновного, можно написать свою обертку над ним и тоже мониторить изменения.
спасибо, это хорошие идеи
еще как вариант , можно заставить БА привязывать свои новые ВалРулы к определенному РТ(-ам), что вполне логично.
а при создании тестовых записей использовать специально созданный "тестовый" РТ, к которому не применяются никакие ВалРулы
ну, так что, нет возражений по поводу такой схемы:
(1) создается специальный рекорд тайп для использования только в тестах.
(2) все тестовые записи создаются под этим рекорд тайпом.
(3) во всех ВалРулах используется дополнительный кондишн: если НЕ тестовый рекорд тайп.
при таком раскладе БА могут делать с ВалРулами, что угодно.
единственно я еще не уверен полностью что если различные профайлы будут пускать тесты, то не будет ли у теста проблем с использованием тестового рекорд тайпа, ну вроде как у того профайла нет доступа к данному рекорд тайпу... тогда тест становится независимым от ВалРулов, но зависимым от запускающего юзера. но я не уверен, что такая проблема существует.
Это как минимум неправильно:
- теряется смысл тестов
- логика зависит от тестов
Было у меня такое. БА на встречу идти не хотели. Приходилось тесты все время вручную править.
я тоже так думал: тесты не воссоздают реальную ситуацию, реальную логику, а "варятся в собственном соку"
но тогда остается только вносить регулярные правки в тест-дата-фабрику...
Правильно! Падают тесты => логика изменилась => проверяешь логику на валидность => либо адаптируешь тесты, либо ищешь ошибку в логике => тесты выполяют свою функцию