我目前正在学习apex(使用Force.com IDE),在为自定义控制器编写测试时遇到了一些麻烦。
控制器类如下:
public with sharing class CustomController {
private List<TestObject__c> objects;
public CustomController() {
objects = [SELECT id, name FROM TestObject__c];
}
public List<TestObject__c> getObjects() {
return objects;
}
}
,测试类是:
@isTest
private class ControllerTest {
static testMethod void customControllerTest() {
CustomController controller = new CustomController();
System.assertNotEquals(controller, null);
List<TestObject__c> objects;
objects = controller.getObjects();
System.assertNotEquals(objects, null);
}
}
在objects = controller.getObjects();
行上,我收到一条错误消息:
保存错误:方法不存在或签名不正确:[CustomController] .getObjects()
任何人都知道为什么我会收到此错误?
答案 0 :(得分:3)
一个很好的速记:
public List<TestObject__c> objects {get; private set;}
它为你创建了getter / setter,看起来更干净。至于你当前的问题,是的 - 将代码直接存储到生产中很困难 - 特别是在单独的文件中使用测试类。
最好在沙箱/ dev org中执行此操作,然后部署到生产(部署到服务器 - Force.com IDE)。但是如果你必须直接保存到生产中,那么我会将测试方法与你的课程结合起来。但从长远来看,在专用测试类上安装@test是可行的方法。它不会以这种方式消耗你宝贵的资源。