为顶点 class 写一个测试 class

write a test class for apex class

我是 apex 的新手,我有兴趣为以下控制器编写测试 class,但不确定从哪里开始。这是我的顶点 class 代码。

public class tree {
   public Account acct{get;set;}  
    //private final Account acct;
    public ApexPages.StandardController stdController {get;set;}
    public tree(ApexPages.StandardController stdController) {
        stdController.addFields(new String[]{'Id','Tete_de_groupe__c'});
        this.acct = (Account)stdController.getRecord();
       // this.stdController = stdController;
       }
    public List<Account> listOfAccount(){
        List<Account> acctList;
        if (acct.Tete_de_groupe__c == null){
        acctList = [SELECT Name,Parent.Name,id,Code_NAF__c ,Industry ,RecordType.Name,Adresse_Agence__c, Tete_de_groupe__c,Statut__c 
                                 FROM Account
                                 where id = :this.acct.id or Tete_de_groupe__c = :this.acct.id ];}
        else {
        acctList = [Select Name,Parent.Name,id,Tete_de_groupe__c,Statut__c
                          from Account
                          where id = :this.acct.Tete_de_groupe__c or Tete_de_groupe__c = :this.acct.Tete_de_groupe__c];}
            return acctList;
    }
    Public String getaccountdata(){
        String datastr1 = '';
        String datastr2 = '';
        String datastr = '';
        List<Account> lstOfAcc =listOfAccount(); 
        for (integer i=0;i<lstOfAcc.size();i++){
     if (lstOfAcc[i].Parent.Name == null){
        datastr1 = datastr1 + '{"name": "';
        datastr1+= lstOfAcc[i].Name;
        datastr1+= '","parent": ';
        datastr1+= lstOfAcc[i].Parent.Name;
        datastr1+= ',"accountid": "';
        datastr1+= lstOfAcc[i].id;
        datastr1+= '","Statut__c": "';
        datastr1+= lstOfAcc[i].Statut__c;
        datastr1+='" }';
    }
     else{
       datastr2 = datastr2 + '{"name": "';
        datastr2+= lstOfAcc[i].Name;
        datastr2+= '","parent": "';
        datastr2+= lstOfAcc[i].Parent.Name;
        datastr2+= '","accountid": "';
        datastr2+= lstOfAcc[i].id;
        datastr2+= '","Statut__c": "';
        datastr2+= lstOfAcc[i].Statut__c;

        datastr2+='" },';  
     }
    }
    if(datastr2 == ''){datastr = '[' + datastr1 + ']';}
    else {
        datastr2 = datastr2.substring(0,datastr2.length()-1);
        datastr = '[' + datastr1 +','+ datastr2 + ']'; }
    return datastr;
    }
}

我想创建测试 class。如果有人能告诉我关于这个顶点 class 的测试 class,伙计们需要帮助。

对于与您发布的 类 相关的单元测试,最简单的方法是考虑给定代码路径的预期结果。对于每种测试方法,问问自己:"Given this set of data, when I invoke this method, I expect this to occur".

让我们来看看您的 "getaccountdata" 方法。 "Given this set of data..." - 此方法需要哪些数据才能正确执行?在不深入研究您的逻辑的情况下,这可能意味着插入一些帐户对象。

"When I invoke this method..." - 正在调用 "getaccountdata" 方法。

"I expect this to occur..." - 这是您的断言发挥作用的地方。您创建了具有特定值的 Account sObjects,因此请验证这些值是否已传播到您的方法中 return 值。

AParise 指出了考虑因素。您在测试中需要做的事情 class,一步一步:

  • 将一些账户对象插入数据库(测试运行默认看不到任何数据,没关系)
  • 保留第一个帐户的 ID,并将其用于 Tete_de_groupe__c 其他帐户。

调用函数,大致是这样:

   Account mainAccount = populateTestAccounts(); // Helper function
   Tree t = new Tree();
   t.setAcct(mainAccount);
   String result = t.getaccountdata();
   assert(....);

这应该可以解决问题![​​=12=]