我正在使用Salesforce,我想从我的沙盒中部署一个自定义的Apex类。在生产中没有Apex类,估计代码覆盖率为0%,因此当我尝试部署我的类时,我会收到以下错误
有没有办法部署我的类?
我要部署的类位于此处:
Public class AutoConvertLeads
{
@InvocableMethod
public static void LeadAssign(List<Id> LeadIds)
{
List<Database.LeadConvert> MassLeadconvert = new List<Database.LeadConvert>();
for(id currentlead: LeadIds){
Database.LeadConvert Leadconvert = new Database.LeadConvert();
Leadconvert.setLeadId(currentlead);
Leadconvert.setConvertedStatus('Qualified');
MassLeadconvert.add(Leadconvert);
}
if (!MassLeadconvert.isEmpty()) {
List<Database.LeadConvertResult> lcr = Database.convertLead(MassLeadconvert);
}
}
}
测试等级:
@isTest
Private class UnitTest_AutoConvert
{
Static TestMethod void AutoConvert()
{
// Create the Lead object
Lead testLead = new Lead(
FirstName='Demo 100800',
LastName = 'Demo 100800 UnitTest',
Status='Qualified',
company='Lacosta'
);
insert testLead;
test.StartTest();
List<Lead> lstOfLeadids = [ testLead.Id ]
AutoConvertLeads.LeadAssign(lstOfLeadIds)
test.stopTest();
}
}
您需要将测试类写入类中,以便能够将其移动到生产环境中。
你可以在这里找到基本的解释
为了满足生产部署要求,您必须满足测试要求。在基本级别上,这意味着您必须在生产代码和测试类之间保持75%的行覆盖率。这是在总体级别上——因此您可以拥有一些或多或少覆盖率的Apex类,但它必须占所有代码的75%。此外,所有Apex触发器都需要至少1行测试覆盖率才能通过测试。
不幸的是,您在问题中提供的信息有限。如果您可以提供测试类的代码,这将很有帮助,这样我们就可以确定为什么Salesforce在部署期间没有执行您的测试。我最初的猜测是,您没有正确地装饰您的测试类,让Salesforce知道它是一个测试类。
如果您想友好地介绍测试,请尝试测试Trailhead:https://trailhead.salesforce.com/en/content/learn/modules/apex_testing
查看Svatopluk推荐的文档。具体确保发生以下情况:
1) 测试类标记为“@isTest”
2) 类中的测试方法在声明中标记为“@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是Type List of铅,但您试图用Id而不是铅填充它。这需要是自AutoConvertLeads以来的Id列表。LeadAssign将Ids列表作为参数。
您对lstofLeads的实例化也是错误的。
您缺少两个分号。
请使用以下代码:
test.StartTest();
List<Id> lstOfLeadids = new List<Id>{ testLead.Id };
AutoConvertLeads.LeadAssign(lstOfLeadIds);
test.stopTest();
在实际的AutoConvertLeads类中,您正在将lead转换状态设置为“合格”。这在我的沙盒上不起作用,但也许会在你的沙盒上起作用。您应该在IsConverted记录的LeadStatus对象上查询MasterLabel,以获得正确的值。
我对Apex很陌生。。一天过去了,我为我的失礼感到非常抱歉。我要做的是返回我的帐户列表,然后查看帐户的合同日期(contract\u Expiration\uu c)。根据该日期,应将自定义字段(update\u active\u status\u text\uu c)更新为null、active或Void。 我没有得到任何错误,但我没有得到任何代码覆盖率。任何帮助都将大有裨益。 提前感谢 顶点类
这是一个重要的可量化指标,如果代码覆盖率很高,你就可以放心的修改代码,在发版本的时候也能睡个安稳觉。否则就是拆东墙补西墙,陷入无尽的 bug 诅咒中。 那么在 OpenResty 里面如何看到代码覆盖率呢?其实很简单,使用 LuaCov 可以很方便的实现。 我们先了解下 LuaCov,这是一个针对 Lua 脚本的代码覆盖率工具,通过 luarocks 来安装: luarocks install l
问题是当我们开发顶点代码,然后我们编写测试类,它至少覆盖顶点类75%的代码覆盖率,现在当我登录到开发人员控制台时,我能够看到代码覆盖率很少,因为手动需要去开发人员控制台,我想要一些可以向高级经理展示的关于整个组织的Salesforce Test代码覆盖率的报告 但是有没有可能在一个非常类似于sonarqube代码覆盖率报告的复杂报告中得到这个 提前谢谢卡洛琳
我在声纳中的代码覆盖率显示为0%,这不是真的,因为我有单元测试。 格拉德尔 当我打开inside然后我可以看到成功的单元测试。 我在Jenkins环境中运行作为
Jacoco插件在jenkins报告中显示0%的覆盖率,但当我在本地系统中运行相同的命令时,Jacoco会正确生成报告。我正在使用以下命令: mvn-s xyz/settings.xml-f xyz/xyz/pom.xml清洁安装org.jacoco 所以当我在jenkins中运行这个命令时,它会生成错误的报告。我已经检查了它在工作区目录对应的项目在詹金斯。它显示每个项目的0%覆盖率。但是当我在本
我的代码运行在具有单独JVM的单独虚拟机上。我想在此虚拟机上以tcpserver模式设置JaCoCo代理以收集覆盖率数据。然后,我将在我的maven项目中以tcpclient模式设置JaCoCo代理,以连接到上面提到的VM并获取覆盖率数据。 问题是代理不收集任何覆盖数据。在中创建了覆盖率数据文件,但该文件为空。 下面是代理选项:-Java agent:/usr/xx/plugins/org . j