【问题标题】:APEX Test Class 0% code coverageAPEX 测试类 0% 代码覆盖率
【发布时间】:2014-07-22 05:26:42
【问题描述】:

我正在尝试部署一些执行简单操作的代码,当用户单击接受按钮时,它会检查一个复选框(我在复选框上设置了一个工作流程),然后我需要它来重定向我感谢你的页面。目前我不知道我的代码是否正确,所以我需要让测试正确才能测试它。

我的Apex班级:

public class proposalCon {
    ApexPages.StandardController stdCtrl;
    Public List <PPM_Project__c> PPM_Project_List {get;set;}

    public proposalCon(ApexPages.StandardController controller) {
        stdCtrl= controller;
        PPM_Project_List = [ select Short_Description__c from PPM_Project__c ];
    }

    public PageReference save(){

        upsert PPM_Project_List;

        PageReference reRend = new PageReference('/apex/final_approval_canvas_complete');
        reRend.setRedirect(true);
        return reRend;
    }

}

这是我的测试尝试:

@isTest
private class proposalConTest{

    static testMethod void testProposalCon() {

        // List of Message
        List <PPM_Project__c> PPM_ProjectList = new List<PPM_Project__c>();

        PPM_ProjectList.add(new PPM_Project__c (
            Name = 'A Test' ,
            Short_Description__c = 'Good Job', 
            Due_Date__c = system.today()+30,
            Final_Design_Artwork__c ='http://proteusleadership.com/DE123'
        ));

        PPM_ProjectList.add(new PPM_Project__c (
            Name = 'A Test 2' ,
            Short_Description__c = 'Good Job', 
            Due_Date__c  = system.today()+30,
            Final_Design_Artwork__c ='http://proteusleadership.com/DEf123'
        )); 

        insert PPM_ProjectList;

        Account account = new Account(Name='Test Co Pty Ltd');
        insert account;

        Contact contact = new Contact(firstName='TestFN',LastName='TestLN',email='testfn.testln@test.com',AccountId=account.Id);
        insert contact;

    // ** Start Testing ***/

        proposalCon controller = new proposalCon();

        PageReference reRend = new PageReference('/apex/final_approval_canvas_complete');
        reRend.setRedirect(true);

        PPM_ProjectList = [ select Short_Description__c from PPM_Project__c ];
    }
}

我一直在尝试但没有运气,我们将不胜感激。

谢谢。

【问题讨论】:

  • 这是自定义控制器还是控制器扩展?
  • 它是一个控制器扩展。我也在使用标准控制器 PPM_Project__c。谢谢。

标签: unit-testing salesforce apex-code apex


【解决方案1】:

您需要实例化一个标准控制器(为其提供 PPM 项目列表),然后实例化您的自定义控制器扩展 - 如下所示:

PPM_Project__c proj = new PPM_Project__c() //you may need further parameters here.

ApexPages.StandardController stdController = new apexPages.StandardController(proj);
proposalCon controller = new proposalCon (stdController); 

然后你可以保存,根据需要重新渲染。让我知道这是否可行 - 我尚未执行此代码,但这是我创建自己的控制器扩展测试的方式。

这至少应该编译。但是,我认为您可能真的想要一个 StandardSetController。 文档在这里: SalesforceDocs

要为 StandardSetController 创建一个测试方法,请使用如下内容:

//instantiate the ApexPages.StandardSetController with an array of projects
ApexPages.StandardSetController stdSetController = new ApexPages.StandardSetController(PPM_ProjectList);

//create custom controller with the StandardSetController as a param
ProposalCon ext = new ProposalCon(stdSetController);

This guy 详细介绍了如何为 StandardSetController(和其他控制器)创建测试方法

【讨论】:

  • 再次感谢您的帮助。我仍然没有任何运气。它只会抛出各种错误。
  • 如果你能分享一两个第一个错误,我也许能弄清楚。
  • 我收到此错误:保存错误:- 保存错误:构造函数未定义:[ApexPages.StandardController].(LIST)
  • 嗯,看代码,我想你可能想要一个 StandardSetController。 StandardController 的构造函数只接受一个 sObject 作为参数 - 我已经相应地更新了我的示例。
猜你喜欢
  • 2018-04-16
  • 1970-01-01
  • 2015-02-09
  • 1970-01-01
  • 2016-01-12
  • 1970-01-01
  • 2023-03-14
  • 2012-01-18
  • 2016-11-11
相关资源
最近更新 更多