我正在努力让我的测试类中的所有代码都包含在顶级类中。
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%的代码覆盖率。我标记了我没有从测试类中获得任何覆盖的行。有什么建议吗?
答案 0 :(得分:0)
您应该在测试类中添加一些断言。像
这样的东西System.assertEquals(5, yourListsize)
答案 1 :(得分:0)
我发现CustomObject1的listvar列表没有填充,因为我没有将标识符传递给var为CustomObject2。在测试类中,我必须使用ApexPages.currentPage().getParameters().put('Id', something.id);
使用在该对象的测试类中创建的记录的Id。不管怎样,谢谢你们: - )