SalesForce代码覆盖率很低(53%),我不知道为什么

SalesForce代码覆盖率很低(53%),我不知道为什么,salesforce,visualforce,apex,force.com,Salesforce,Visualforce,Apex,Force.com,我已经在sandbox中为salesforce创建了一个类,它工作得很好,但是当我尝试将它部署到生产环境中时,我得到的代码成本很低。 我尝试了我所知道的一切,但是猫找到了解决办法, 这是密码,有什么帮助吗 public Class CandidateFileUploads_Ver1{ public String parentId ; public String idxVal {get;set;} public Map<String, Attachment> attachments

我已经在sandbox中为salesforce创建了一个类,它工作得很好,但是当我尝试将它部署到生产环境中时,我得到的代码成本很低。 我尝试了我所知道的一切,但是猫找到了解决办法, 这是密码,有什么帮助吗

public Class CandidateFileUploads_Ver1{

public String parentId ;
public String idxVal {get;set;}
public Map<String, Attachment> attachments {get;set;}
public Map<String, Attachment> attachmentsDup {get;set;}

public Boolean validateUser {get;set;}
public String multipulDocs {get;set;}
public String userMessage {get;set;}

private static final Map<String, String> descriptionNameMap = new Map<String, String>{
'Upload a scan of the Passport'=>'Passport',
'Upload a Resume (CV)'=>'Resume (CV)'};

private static final Map<String, String> descriptionCheckFieldMap = new Map<String, String>{
'Upload a scan of the Passport'=>'Passport_Attached__c',
'Upload a Resume (CV)'=>'CV_Attached__c'};


public CandidateFileUploads_Ver1(ApexPages.StandardController controller){

    idxVal = '';
    validateUser = true;
    multipulDocs = System.Label.multiple_docs;
    userMessage = '';

    checkUserValid();
    attachments = new Map<String, Attachment>();       
    attachmentsDup = new Map<String, Attachment>();  

    parentId = System.currentPageReference().getParameters().get('Id');
    //parentId = '0034E00000FVJzA';
    List<Attachment> existingAttachments = fetchAllAttachments(parentId);//get all attachements for thew user

    for(String key :descriptionNameMap.keySet()){
        String kokp = descriptionCheckFieldMap.get(key);
        attachments.put(key.toLowerCase(), new Attachment(parentId=parentId, Description=key, body=null,Name = kokp )) ;
    }    

    for(Attachment attach :existingAttachments){
        attach.body = null;
        attachments.put(attach.Description.toLowerCase(), attach);             
    }
}

 public void checkUserValid(){
    String hours = System.Label.hours;
    String whitelist = System.Label.whitelist;
    ID pId = System.currentPageReference().getParameters().get('Id');
    Boolean validateUser = true;
    String userMessage;

    Contact parenter = new Contact(Id=pId);
     // Validate Proccess status: get proccess string status
            String getStatus = parenter.Process_Status__c;
            String[] whitelistArr = whitelist.split(',');// split proccess string

             Boolean checkWhiteList = false;
             for(String val : whitelistArr){
                 if(val == getStatus) {
                     checkWhiteList = true;
                 }
             }

             if(validateUser != checkWhiteList){
                 validateUser = false;
                 userMessage = System.Label.error_not_premitted;
                 return;
             }

    //Validate Dates
            //Datetime  getLinktimestamp = (Datetime) contactSObject.get('linktimestamp__c');
            Datetime  getLinktimestamp = parenter.linktimestamp__c;
            Datetime  getValidTime = getLinktimestamp.addHours(Integer.valueof(hours.trim())); //add 48 hours
            Datetime timeNow = System.now();

             if(getValidTime < timeNow){//if if more then 48 hours
                 validateUser = false;
                 userMessage = System.Label.error_expired;
                 return;
             }
 }


 public Datetime  getLinktimestamp(){
    ID pId = System.currentPageReference().getParameters().get('Id');
    Datetime  accts = [SELECT linktimestamp__c FROM Contact WHERE Id=:pId].linktimestamp__c;
    return accts;
}


public List<Contact> contactObj(){
    ID pId = System.currentPageReference().getParameters().get('Id');

    sObject mySObject =[SELECT linktimestamp__c,Process_Status__c FROM Contact WHERE Id=:pId];
    //Datetime llli = s.linktimestamp__c;
    String strObjectName = String.valueOf( mySObject.get('linktimestamp__c') );

    List<Contact> obj = [SELECT linktimestamp__c,Process_Status__c FROM Contact WHERE Id=:pId];
    return obj;
}

public void uploadAttachment(){     
    List<Attachment> uploads = new List<Attachment>() ;
    List<Attachment> deletes = new List<Attachment>() ;

    try{
        for(integer i = 0 ; i < attachments.values().size() ; i++){

            Attachment attach = attachments.values()[i] ;
            if(attach.parentId == NULL){
                        attach.parentId = System.currentPageReference().getParameters().get('Id');
            }
            //this is a file that was uploaded now
            if(attach.body != NULL){
                //remove current attachement before uploading a new one
                if(attach.Id != NULL){
                    deletes.add(attachments.values().remove(i));
                }

                attach.Name = renameFile(attach.Name, attach.Description);
                uploads.add(attach) ;
            }
        }

        if(!deletes.isEmpty()){
            delete deletes ;
        }

        if(!uploads.isEmpty()){        
            for(Attachment atchmnt :uploads){
                atchmnt.Id = null;   
            }

            insert uploads;

            Contact parent = new Contact(Id=parentId);

            for(Attachment attach :getUpdatedAttachments(uploads).values()){
                attach.body = null;
                attachments.put(attach.Description.toLowerCase(), attach);

                parent.put(descriptionCheckFieldMap.get(attach.Description), true);                    
            }

            update parent;

            ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.info,'Attachment upload Successfully');
            ApexPages.addMessage(myMsg);
        }

    }        
    catch(exception e){
        ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.ERROR,'An Error occured when uploading attachment');
        ApexPages.addMessage(myMsg);
    }
}

public void removeRow(){
    Attachment a = attachments.get(idxVal.toLowerCase());

    Contact parent = new Contact(Id=parentId);
    parent.put(descriptionCheckFieldMap.get(a.Description), false); 

    delete a;
    update parent;

    system.debug('attachments before: ' + attachments);
    attachments.put(a.Description.toLowerCase(), new Attachment(parentId = parentId, description = a.description, body=null));
    system.debug('attachments after: ' + attachments);
}    

private static String renameFile(String fileName, String description){
    String newName = descriptionNameMap.get(description);
    if(String.isNotBlank(fileName) && fileName.contains('.')){
        newName += fileName.substring(fileName.lastIndexOf('.'), fileName.length());
    }

    return newName;
} 

private static Map<String,Attachment> getUpdatedAttachments(List<Attachment> attachList){

    Map<String,Attachment> attMap = new Map<String,Attachment>();

    for(Attachment att : [SELECT Id,Name,Description
                                      FROM Attachment
                                      WHERE Id = :attachList]){
        attMap.put(att.Description.toLowerCase(), att) ;       
    }

    return attMap;
}

public List<Attachment> fetchAllAttachments(String parentId){

    return [SELECT Id,Name,Description,parentId
            FROM Attachment 
            WHERE ParentId =: parentId 
            AND Description IN :descriptionNameMap.keySet()];
}
公共类候选文件上载\u版本1{
公共字符串parentId;
公共字符串idxVal{get;set;}
公共映射附件{get;set;}
公共地图附件设置{get;set;}
公共布尔验证程序{get;set;}
公共字符串multipulDocs{get;set;}
公共字符串userMessage{get;set;}
私有静态最终映射描述NameMap=新映射{
'上载护照扫描'=>'护照',
'上传简历(CV)'=>'简历(CV)};
私有静态最终映射描述checkfieldmap=新映射{
“上传护照扫描”=>“护照随附”,
“上传简历(CV)”=>“简历附在简历上”};
公共候选文件上传版本1(ApexPages.StandardController){
idxVal='';
validateUser=true;
multipulDocs=System.Label.multiple_docs;
userMessage='';
checkUserValid();
附件=新地图();
attachmentsDup=新映射();
parentId=System.currentPageReference().getParameters().get('Id');
//parentId='0034E00000FVJzA';
List existingAttachments=fetchAllAttachments(parentId);//获取w用户的所有附件
for(字符串键:descriptionNameMap.keySet()){
字符串kokp=descriptionCheckFieldMap.get(键);
attachments.put(key.toLowerCase(),新附件(parentId=parentId,Description=key,body=null,Name=kokp));
}    
用于(附件附加:现有附件){
attach.body=null;
attachments.put(attach.Description.toLowerCase(),attach);
}
}
public void checkUserValid(){
字符串小时数=System.Label.hours;
字符串白名单=System.Label.whitelist;
ID pId=System.currentPageReference().getParameters().get('ID');
布尔验证euser=true;
字符串用户消息;
联系人父项=新联系人(Id=pId);
//验证进程状态:获取进程字符串状态
字符串getStatus=parenter.Process\u Status\uuu c;
String[]whitelistArr=whitelist.split(',');//split进程字符串
布尔检查白名单=假;
for(字符串val:whitelistArr){
if(val==getStatus){
checkWhiteList=true;
}
}
如果(validateUser!=检查白名单){
validateUser=false;
userMessage=System.Label.error\u未预写;
返回;
}
//验证日期
//Datetime getLinktimestamp=(Datetime)contactSObject.get('linktimestamp_____c');
Datetime getLinktimestamp=parenter.linktimestamp\uuu\c;
Datetime getValidTime=getLinktimestamp.addHours(Integer.valueof(hours.trim());//添加48小时
Datetime timeNow=System.now();
if(getValidTime