繁体   English   中英

Salesforce Apex增加覆盖率测试

[英]Salesforce Apex increase coverage test

我的测试覆盖率高达 66%,我该如何提高? 我不知道如何在测试 class 中访问或使用alerta变量,我想将测试覆盖率从 66% 增加到至少 75% 甚至更多

顶点 class:

public static Boolean getContacto (String contactId) {
    Boolean alerta = false;
    if(String.isNotBlank(contactId) && String.isNotEmpty(contactId)){
        Contact contacto =[SELECT Id, UniqueId_Status__c, UniqueId__c from Contact where Id =: contactId and Country__c = 'CHILE'];
        
        if(contacto.UniqueId__c == null && (contacto.UniqueId_Status__c == 'M2' || contacto.UniqueId_Status__c == 'M3' || contacto.UniqueId_Status__c == 'M4' || contacto.UniqueId_Status__c == 'R2' || contacto.UniqueId_Status__c == 'R3' || contacto.UniqueId_Status__c == 'R4')){
            alerta = true;
        }else
        if(contacto.UniqueId__c != null && (contacto.UniqueId_Status__c == 'M2' || contacto.UniqueId_Status__c == 'M3' || contacto.UniqueId_Status__c == 'M4' || contacto.UniqueId_Status__c == 'R2' || contacto.UniqueId_Status__c == 'R3' || contacto.UniqueId_Status__c == 'R4')){
            alerta = true;   
        }else
        if(contacto.UniqueId__c != null && contacto.UniqueId_Status__c != 'M2' && contacto.UniqueId_Status__c != 'M3' && contacto.UniqueId_Status__c != 'M4' && contacto.UniqueId_Status__c != 'R2' && contacto.UniqueId_Status__c != 'R3' && contacto.UniqueId_Status__c != 'R4' && contacto.UniqueId_Status__c != 'D1' && contacto.UniqueId_Status__c != null){
            alerta = true;   
        }
    }        
    return alerta;
}

测试类:

@isTest public class ATCL_BloquearContactoTest {    @IsTest
    static void bloqueaContactoTest(){
        Contact contactos = new Contact();
        
        contactos.FirstName = 'Amanda';
        contactos.LastName = 'testing';
        contactos.UniqueId_Status__c = 'M1';
        contactos.Country__c = 'CHILE';
        insert contactos;
        
        Test.startTest();
        ATCL_BloquearContactoCTRL.getContacto(contactos.Id);
        Test.stopTest();
    } }

知道如何覆盖警报变量

谢谢胡安

低调是把这些ifs视为不同的场景。 要实现这些不同的场景,您必须将新值添加到测试 class 以最终通过ifs语句。 每个场景都应该使用不同的@istest 方法来解决:

public class ATCL_BloquearContactoTest {
@IsTest
static void bloqueaContactoTestNull(){
    Contact contactos = new Contact();
    
    contactos.FirstName = 'Amanda';
    contactos.LastName = 'testing';
    contactos.UniqueId__c = null;//== null
    contactos.UniqueId_Status__c = 'M2';//like M_ || R_
    contactos.Country__c = 'CHILE';
    insert contactos;
    
    Test.startTest();
    ATCL_BloquearContactoCTRL.getContacto(contactos.Id);
    Test.stopTest();

}
@IsTest
static void bloqueaContactoTestNotNull(){
    Contact contactos = new Contact();
    
    contactos.FirstName = 'Amanda';
    contactos.LastName = 'testing';
    contactos.UniqueId__c = '21354689';//!= null
    contactos.UniqueId_Status__c = 'M2';//like M_ || R_
    contactos.Country__c = 'CHILE';
    insert contactos;
    
    Test.startTest();
    ATCL_BloquearContactoCTRL.getContacto(contactos.Id);
    Test.stopTest();

}
@IsTest
static void bloqueaContactoTestNotNullNotNull(){
    Contact contactos = new Contact();
    
    contactos.FirstName = 'Amanda';
    contactos.LastName = 'testing';
    contactos.UniqueId__c = '21354689';//!= null
    contactos.UniqueId_Status__c = '0';//!(like  M_ || R_)
    contactos.Country__c = 'CHILE';
    insert contactos;
    
    Test.startTest();
    ATCL_BloquearContactoCTRL.getContacto(contactos.Id);
    Test.stopTest();

}

}

再见

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM