Salesforce 顶点错误:";保存错误:方法不存在或签名不正确;

Salesforce 顶点错误:";保存错误:方法不存在或签名不正确;,salesforce,apex-code,Salesforce,Apex Code,我目前正在学习apex(使用Force.com IDE),在为自定义控制器编写测试时遇到了一些麻烦 控制器类如下所示: public with sharing class CustomController { private List<TestObject__c> objects; public CustomController() { objects = [SELECT id, name FROM TestObject__c]; }

我目前正在学习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;
    }
}
public与共享类CustomController{
私有列表对象;
公共客户控制员(){
objects=[从TestObject__c中选择id、名称];
}
公共列表getObjects(){
归还物品;
}
}
测试等级为:

@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);    
    }
}
@isTest
私有类控制器测试{
静态测试方法void customControllerTest(){
CustomController=新的CustomController();
System.assertNotEquals(控制器,空);
列出对象;
objects=controller.getObjects();
System.assertNotEquals(对象,空);
}
}
objects=controller.getObjects()上行我收到一个错误,上面写着:

保存错误:方法不存在或签名不正确:[CustomController].getObjects()

有人知道我为什么会出现这个错误吗?

一个很好的速记:

public List<TestObject__c> objects {get; private set;}
公共列表对象{get;private set;}
它为您创建了getter/setter,在我看来更干净。至于您当前的问题,是的-很难将代码直接保存到生产环境中-尤其是在单独文件中的测试类中


最好在sandbox/dev组织中执行此操作,然后部署到生产环境(部署到服务器-Force.com IDE)。但如果您必须直接保存到产品中,那么我会将测试方法与您的类结合起来。但从长远来看,将@test放在专用测试类之上是一条可行之路。这样做不会消耗您宝贵的资源。

头等舱是否确实节省了资源?看不到任何突出的地方,通常当我看到这条消息时,这是因为我做了一些愚蠢的事情,例如,我试图调用一个静态方法,但实际上从未使用过static关键字!值得一提的是,将该类粘贴到Execute Anonymous(但使用Contact而不是TestObject_uc)中,然后在它的新实例上调用getObjects不会出错。我在代码中没有发现任何其他错误。文件保存在本地,但不在服务器上(可能是由于测试未通过)。在“执行匿名”中尝试时,我也得到了完全相同的消息。您是直接针对生产环境还是在沙箱中工作?它不会运行保存到沙盒的测试,因此它不应该只保存在本地。我假设从您的响应来看,所有这些都在一个文件中,测试方法实际上不需要在一个单独的类中,我倾向于在类中定义我的方法,如下所示:public static testmethod void TestClassName(){//etc}它们实际上在两个单独的文件中,目前直接在生产环境中执行。我可能只是在沙箱里试一下,看看效果如何。是的,我很快就受够了,并且做了你刚才描述的事情。