Чтобы соответствовать требованиям развертывания производства, вы должны соответствовать требованиям тестирования. На базовом уровне это означает, что вы должны поддерживать 75% покрытия строк между вашим рабочим кодом и вашими тестовыми классами. Это на совокупном уровне - поэтому вы можете иметь некоторые классы Apex с большей или меньшей степенью покрытия, но они должны составлять 75% всего кода. Кроме того, для всех триггеров Apex требуется как минимум 1 линия покрытия тестами, чтобы пройти тестирование.
К сожалению, вы предоставили ограниченную информацию в своем вопросе. Было бы полезно, если бы вы могли предоставить код для вашего тестового класса, чтобы мы могли определить, почему Salesforce не выполняет ваши тесты во время развертывания. Я предполагаю, что вы неправильно оформили свой тестовый класс для Salesforce, чтобы знал , что это тестовый класс.
Если вы хотите дружеское введение в тестирование, попробуйте Trailhead для тестирования: https://trailhead.salesforce.com/en/content/learn/modules/apex_testing
Посмотрите документацию, рекомендованную Сватоплуком. В частности, убедитесь, что происходит следующее:
1) Тестовый класс помечен как "@isTest"
2) Метод test в классе помечается как "@isTest" или "testMethod" в объявлении.
3) Тестовый класс фактически создает и выполняет код внутри целевого класса.
4) Разверните TargetClass и TestClass в одном наборе изменений - это так, чтобы Salesforce действительно могла выполнять тесты во время развертывания.
Вот пример блока:
@isTest
public class TestTargetClass{
public static testMethod void TestExectuableMethod() {
Test.startTest();
TargetClass instance_tc = new TargetClass();
instance_tc.executable_method();
Test.stopTest();
System.assert(<some sort of test to confirm that your TargetClass operates correctly>);
}
}
РЕДАКТИРОВАТЬ НА ОСНОВЕ ПОЛОЖЕННОГО КОДА ИСПЫТАНИЯ:
Ваш тестовый код имеет ряд проблем.
Во-первых, он не компилируется, поэтому я не уверен, как вы смогли пройти пройденный тест.
Давайте рассмотрим ошибки в следующем блоке:
test.StartTest();
List<Lead> lstOfLeadids = [ testLead.Id ]
AutoConvertLeads.LeadAssign(lstOfLeadIds)
test.stopTest();
Вторая строка lstOfLeadids относится к списку типов отведений, но вы пытаетесь заполнить ее идентификатором, а не отведением.
Это должен быть список идентификаторов, поскольку AutoConvertLeads.LeadAssign принимает список идентификаторов в качестве параметра.
Ваш экземпляр lstOfLeadids также неверен.
Вам не хватает двух точек с запятой.
Пожалуйста, используйте следующий код:
test.StartTest();
List<Id> lstOfLeadids = new List<Id>{ testLead.Id };
AutoConvertLeads.LeadAssign(lstOfLeadIds);
test.stopTest();
В вашем текущем классе AutoConvertLeads вы устанавливаете статус конвекции лидов в "Квалифицированный". Это не сработало на моей Песочнице, но, возможно, на твоей. Вы должны запросить MasterLabel для объекта LeadStatus записи IsConverted, чтобы получить правильное значение.