如何在sales的apex测试类中获取查询

时间:2018-03-30 06:10:33

标签: salesforce apex-code

我正在努力让我的测试类中的所有代码都包含在顶级类中。

Apex课程:

public with sharing class myclass {

**public List<CustomObject1> listvar {get;set;}**

public myclass(ApexPages.StandardController sc){
    CustomObject2 var = [SELECT Id, Field1__c FROM CustomObject2 WHERE Id = :ApexPages.currentPage().getParameters().get('id')]; 
    **listvar = [SELECT Id,Name,Field1__c,Field2__c,Field3__c,Field4__c,Field5__c,CreatedDate,CreatedById FROM CustomObject1 WHERE Field2__c = :var.Field1__c ORDER BY CreatedDate DESC];**
}

}

测试类:

@isTest
public class myclass_Test {

     static testmethod void dosomething(){
Account a = new Account();
            a.Name = 'Test acct';
            insert a;

        CustomObject4__c v = new CustomObject4__c();
            v.Field1__c = '123 ABC';
            v.Name = 'test name';
            v.Field2__c = True;
            v.Account__c = a.Id;
            insert v;
... more record creates including ones for the object being queried...

PageReference pageref = Page.myVFpage;
    Test.setCurrentPageReference(pageref);
    ApexPages.StandardController sc = new ApexPages.StandardController(v); 

        myclass myPageCon = new myclass(sc);
}
}

我已经尝试为测试类中最后一行的下面创建一个新列表并填充列表,但我无法获得100%的代码覆盖率。我标记了我没有从测试类中获得任何覆盖的行。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

您应该在测试类中添加一些断言。像

这样的东西
System.assertEquals(5, yourListsize)

答案 1 :(得分:0)

我发现CustomObject1的listvar列表没有填充,因为我没有将标识符传递给var为CustomObject2。在测试类中,我必须使用ApexPages.currentPage().getParameters().put('Id', something.id);

放置记录Id

使用在该对象的测试类中创建的记录的Id。不管怎样,谢谢你们: - )