Контроллер на 800 строк прошел в ПРод вообще не покрытым тестом. Возможно ли такое?
Работаю с одним большим старым приложением.
нужно было апдатировать один контроллер на 800 строк.
так вот, перед сбором в Чендж сет, ищу тест, который его покрывает.
нахожу здоровучий тест, на весь код в этом Приложении, который имеет много тест методов, которые хорошо покрывают многие (вероятно почти все требуемые) классы. И тот тест имеет спец метод (он последний из них) которые покрывает мои контроллер. Только он не покрывает его вовсе. Не падает, но и не покрывает: контроллер вообще не вызывается.
Вопрос: как этот контроллер вообще попал в Прод (а он там есть и хорошо работает)?
У меня только один вариант: при отправке или деплойменте система проверяет общее покрытие на весь чендж сет. То есть так как прочие классы в пределах сета были покрыты почто на 99%, но непокрытые строки нашего контроллера отъели какие проценты от 99% покрытие, но в связи с тем что кода покрытого было много в целом, процентовка удержалась в пределах >75%... т.е. там нет проверки процентовки применительно к каждому отдельному классу...
1. AccountId - это непосредственно ИД аккаунта, а Account - это relationship. Если бы у тебя были кастомные поля то они были бы Account__c и Account__r соответственно.
1. AccountId - это непосредственно ИД аккаунта, а Account - это relationship. Если бы у тебя были кастомные поля то они были бы Account__c и Account__r соответственно.
а что в CustomField__r можно вставить соответсвующий объект целиком по создании связанного объекта? я не знал
там таких переменных много.
этакие глобальные переменные для SOQL, но все связанные со временем
По поводу того что класс залился без тестов на прод (из темы) Такое может быть если суммарное покрытие кода на проде больше 75% (много покрытых тестами классов и один непокрытый погоды не делает относительно). НО возможно у тебя он все-таки косвенно вызывается и покрывается тестами? Посмотри в консоли по этому поводу.
На счет того что класс есть, а на него ругается при заливке changeSet - это точно ты что-то не досмотрел. Не может быть такого. Может класс на проде имеет префикс пакетный? или в классе появилось что-то новое? Проверь после заливки changeSet не появилось ли у тебя случайно 2 файла с таким названием на проде?
НО возможно у тебя он все-таки косвенно вызывается и покрывается тестами? Посмотри в консоли по этому поводу.
нет не вызывается, там один здоровучий тест класс, и где его не гоняй, что в косоли, что в Эклипсе, тот контроллер вообще не покрыт.
На счет того что класс есть, а на него ругается при заливке changeSet - это точно ты что-то не досмотрел. Не может быть такого. Может класс на проде имеет префикс пакетный? или в классе появилось что-то новое? Проверь после заливки changeSet не появилось ли у тебя случайно 2 файла с таким названием на проде?
да нет у меня доступа к проду, чтобы все проверить. сам удивился. нет никаких префиксов, просто внутри контроллера создается лист объектов того дата-класса, куда и собирается инфа из записей... может этот дата класс доступен только в пределах "пакета" в роли которого выступает ЧСет, не знаю
А это что означает? Если залили класс когда орг был триальным, а потом стал проплаченным, то классы недоступны?
Задеплоил класс в триал, он исправно работает Проплатили орг, класс по прежнему исправно работает. Попытались обновить класс из песка, класс работет, но обновление без тестов не деплоится
А это что означает? Если залили класс когда орг был триальным, а потом стал проплаченным, то классы недоступны?
Задеплоил класс в триал, он исправно работает Проплатили орг, класс по прежнему исправно работает. Попытались обновить класс из песка, класс работет, но обновление без тестов не деплоится
Примерно такая история :)
Нормально все деплоится если общее покрытие >75% и нет падений в других тестах