我目前正在学习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()
有人知道为什么我得到这个错误吗?
一个很好的简写:
public List<TestObject__c> objects {get; private set;}
它为你创建了getter/setter,看起来更简洁。至于你当前的问题,是的——很难直接将代码保存到生产环境中——特别是测试类放在单独的文件中。
最好在sandbox/dev org中完成,然后将部署到生产环境(部署到服务器- Force.com IDE)。但是如果您必须直接保存到生产环境中,那么我会将测试方法与您的类结合起来。但是从长远来看,将@test置于专用的测试类之上才是正确的方法。这样就不会占用你宝贵的资源了。