为顶点 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=]
我是 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=]