2012-03-21 10 views
10

मैं के साथ विषय "ईमेल टास्क"एपेक्स इकाई परीक्षण कोई डेटा

मैं के रूप में

public class TaskInfoDAOClass 
{ 
    public static List<Task> queryTaskInfo() 
    { 
integer count = [SELECT count() FROM Task]; 
System.debug('Row Count :'+ count); 
List<Task> tasks= [SELECT Task.Id,Task.AccountId,Task.Status,Task.Account.Name FROM Task where Task.Subject='Email Task']; 
    return tasks;  
    } 
} 

मैं एक परीक्षण वर्ग बनाया है सुप्रीम कोड का परीक्षण करने के सुप्रीम कोड लिखा है मेरे संगठन में एक काम बनाया है देखता है

@isTest 
public class TestTaskInfoDAO 
{ 
public static testMethod void testQueryTaskInfo() 
{ 
List<Task> tasks = TaskInfoDAOClass.queryTaskInfo(); 
System.debug ('this is a debug statement'); 

for (Task t : tasks) 
{ 
System.debug ('Status '+ t.Status); 
    System.debug ('Account name '+ t.Account.Name); 

} 
} 
} 

जब मैं इस परीक्षण को चलाता हूं तो मुझे 0 पंक्तियों के रूप में मिल रहा है। कृपया apex.log फ़ाइल

24.0 APEX_CODE,FINE;APEX_PROFILING,FINE;DB,INFO;VALIDATION,INFO;WORKFLOW,FINEST 
23:48:30.100 (100678000)|EXECUTION_STARTED 
23:48:30.100 (100722000)|CODE_UNIT_STARTED|[EXTERNAL]|01p90000000k5Qw|TestTaskInfoDAO.testQueryTaskInfo 
23:48:30.101 (101272000)|METHOD_ENTRY|[2]|01p90000000k5Qw|TestTaskInfoDAO.TestTaskInfoDAO() 
23:48:30.101 (101414000)|METHOD_EXIT|[2]|TestTaskInfoDAO 
23:48:30.101 (101494000)|METHOD_ENTRY|[1]|01p90000000k5Qr|TaskInfoDAOClass.TaskInfoDAOClass() 
23:48:30.101 (101513000)|METHOD_EXIT|[1]|TaskInfoDAOClass 
23:48:30.101 (101782000)|METHOD_ENTRY|[6]|01p90000000k5Qr|TaskInfoDAOClass.queryTaskInfo() 
23:48:30.102 (102176000)|SOQL_EXECUTE_BEGIN|[5]|Aggregations:0|select count() from Task 
23:48:30.106 (106893000)|SOQL_EXECUTE_END|[5]|Rows:0 
23:48:30.106 (106965000)|SYSTEM_METHOD_ENTRY|[6]|String.valueOf(Object) 
23:48:30.107 (107012000)|SYSTEM_METHOD_EXIT|[6]|String.valueOf(Object) 
23:48:30.107 (107032000)|SYSTEM_METHOD_ENTRY|[6]|System.debug(ANY) 
23:48:30.107 (107040000)|USER_DEBUG|[6]|DEBUG|Row Count :0 
23:48:30.107 (107047000)|SYSTEM_METHOD_EXIT|[6]|System.debug(ANY) 
23:48:30.107 (107385000)|SOQL_EXECUTE_BEGIN|[9]|Aggregations:0|select Task.Id, Task.AccountId, Task.Status, Task.Account.Name from Task where Task.Subject = 'Email Task' 
23:48:30.109 (109847000)|SOQL_EXECUTE_END|[9]|Rows:0 
23:48:30.109 (109930000)|METHOD_EXIT|[6]|01p90000000k5Qr|TaskInfoDAOClass.queryTaskInfo() 
23:48:30.110 (110074000)|USER_DEBUG|[7]|DEBUG|this is a debug statement 
23:48:30.789 (111361000)|CUMULATIVE_LIMIT_USAGE 
23:48:30.789|LIMIT_USAGE_FOR_NS|(default)| 
    Number of SOQL queries: 2 out of 100 
    Number of query rows: 0 out of 50000 
    Number of SOSL queries: 0 out of 20 
    Number of DML statements: 0 out of 150 
    Number of DML rows: 0 out of 10000 
    Number of script statements: 7 out of 200000 
    Maximum heap size: 0 out of 6000000 
    Number of callouts: 0 out of 10 
    Number of Email Invocations: 0 out of 10 
    Number of fields describes: 0 out of 100 
    Number of record type describes: 0 out of 100 
    Number of child relationships describes: 0 out of 100 
    Number of picklist describes: 0 out of 100 
    Number of future calls: 0 out of 10 

23:48:30.789|TOTAL_EMAIL_RECIPIENTS_QUEUED|0 
23:48:30.789|STATIC_VARIABLE_LIST| 
    double:MAX_VALUE:0 
    long:serialVersionUID:0 
    int:MAX_EXPONENT:0 
    int:MIN_EXPONENT:0 
    Boolean:TRUE:0 
    long:serialVersionUID:0 
    double:POSITIVE_INFINITY:0 
    double:MIN_NORMAL:0 
    double:MIN_VALUE:0 
    Boolean:FALSE:0 
    int:SIZE:0 
    char[]:DigitOnes:0 
    int[]:sizeTable:0 
    char[]:DigitTens:0 
    double:NaN:0 
    int:MAX_VALUE:0 
    char[]:digits:0 
    long:serialVersionUID:0 
    double:NEGATIVE_INFINITY:0 
    int:MIN_VALUE:0 
    int:SIZE:0 

23:48:30.789|CUMULATIVE_LIMIT_USAGE_END 

23:48:30.111 (111444000)|CODE_UNIT_FINISHED|TestTaskInfoDAO.testQueryTaskInfo 
23:48:30.111 (111452000)|EXECUTION_FINISHED 
23:48:30.999|CUMULATIVE_PROFILING_BEGIN 
23:48:30.999|CUMULATIVE_PROFILING|SOQL operations| 
    Class.TaskInfoDAOClass.queryTaskInfo: line 5, column 1: [SELECT count() FROM Task]: executed 1 time in 5 ms 
    Class.TaskInfoDAOClass.queryTaskInfo: line 9, column 1: [SELECT Task.Id,Task.AccountId,Task.Status,Task.Account.Name FROM Task where Task.Subject='Email Task']: executed 1 time in 3 ms 

23:48:30.999|CUMULATIVE_PROFILING|No profiling information for SOSL operations 
23:48:30.999|CUMULATIVE_PROFILING|No profiling information for DML operations 
23:48:30.999|CUMULATIVE_PROFILING|method invocations| 
    External entry point: public static testMethod void testQueryTaskInfo(): executed 1 time in 11 ms 
    Class.TestTaskInfoDAO.testQueryTaskInfo: line 6, column 1: public static LIST<Task> queryTaskInfo(): executed 1 time in 8 ms 
    Class.TestTaskInfoDAO.testQueryTaskInfo: line 9, column 1: global object iterator(): executed 2 times in 1 ms 
    Class.TaskInfoDAOClass.queryTaskInfo: line 6, column 1: global public static String valueOf(Object): executed 2 times in 0 ms 
    Class.TestTaskInfoDAO.testQueryTaskInfo: line 7, column 1: global public static void debug(ANY): executed 1 time in 0 ms 

23:48:30.999|CUMULATIVE_PROFILING_END 

मुझे 0 ROW COUNT क्यों मिल रहा है?

उत्तर

20

ऐसा इसलिए है क्योंकि वसंत 2012 के रूप में, डेटा परीक्षण के दौरान संगठन में नहीं होगा और जब तक आप IsTest (SeeAllData = true) एनोटेशन का उपयोग नहीं करते हैं तब तक आपके परीक्षण विधियों से पुनर्निर्मित नहीं किया जाना चाहिए। एपेक्स मैनुअल से:

सहेजे एपेक्स कोड के साथ शुरू Salesforce एपीआई संस्करण 24.0 और बाद में उपयोग करते हुए, परीक्षण तरीकों, कस्टम इस तरह के मानक वस्तुओं के रूप में संगठन में डेटा , मौजूदा पूर्व डिफ़ॉल्ट रूप से पहुँच नहीं है ऑब्जेक्ट्स, और कस्टम सेटिंग्स डेटा, और केवल वे डेटा एक्सेस कर सकते हैं जो वे बनाते हैं।

आपको प्रत्येक परीक्षण के लिए परीक्षण डेटा बनाना होगा। आप IsTest (SeeAllData = true) एनोटेशन के साथ अपनी टेस्ट क्लास या टेस्ट विधि को एनोटेट करके इस प्रतिबंध को अक्षम कर सकते हैं। अधिक जानकारी के लिए, IsTest (SeeAllData = true) एनोटेशन देखें।

7

आपको अपनी परीक्षण विधि की शुरुआत में "ईमेल कार्य" विषय के साथ एक कार्य डालना होगा। नवीनतम रिलीज के रूप में, परीक्षण विधियां सिस्टम में पहले से ही डेटा तक नहीं पहुंच पाती हैं जो सुनिश्चित करती है कि परीक्षण ओआरजी के बीच कवरेज के साथ काफी सुसंगत रहेगा। इसका मतलब यह भी है कि अब हमें डेटा के लिए विशिष्ट विशिष्ट खंड जोड़ना होगा ताकि यह सुनिश्चित किया जा सके कि वे बड़े डेटासेट से पूछताछ करते समय सही रिकॉर्ड चुनते हैं!

+3

निश्चित रूप से। यह परिवर्तन कुछ निराश होने का कारण बन रहा है लेकिन अंत में यह हर किसी के लिए बेहतर होगा। मैं समर्थन वर्ग बनाना चाहता हूं जो टेस्ट डेटा उत्पन्न करने वाले टेस्ट विधियों को कॉल करें। यह अब भी बेहतर है कि हमारे द्वारा डाले गए परीक्षण डेटा के आधार पर परिणामों की अपेक्षा करने के लिए यादृच्छिक वास्तविक डेटा की संभावना नहीं होगी। यदि, उदाहरण के लिए, मैं एक "ईमेल कार्य" रिकॉर्ड डालता हूं, तो मुझे पता चलेगा कि परीक्षण में केवल एक ही होगा, इसलिए गिनती होगी() 1 = 1, संभावित रूप से नहीं> 1। – Adam

संबंधित मुद्दे