Salesforce
एपेक्स परीक्षण
खोज…
दावे के तरीके
static TestMethod void DmlTest() {
List<Contact> allContacts = [SELECT Id FROM Contact];
System.assert(allContacts.isEmpty());
Contact testContact = new Contact(FirstName = 'John', LastName = 'Doe');
insert testContact;
allContacts = [SELECT Id FROM Contact];
System.assertNotEquals(0, allContacts.size(), 'Optional message in case of failure');
delete allContacts;
allContacts = [SELECT Id FROM Contact];
System.assertEquals(0, allContacts.size());
}
बेसिक टेस्ट क्लास
यह परीक्षण वर्ग SomeClass
की IsBlank(...)
विधि का परीक्षण करेगा। नीचे SomeClass
का उदाहरण दिया गया है। इस वर्ग में केवल एक ही है, मूल static
विधि, लेकिन आप इसे कोड इंस्ट्रूमेंट थ्रेशोल्ड तक पहुँचने तक उपयोग के लिए उत्पादन इंस्टेंस पर लागू करने में असमर्थ होंगे।
public class SomeClass {
public static Boolean IsBlank(String someData) {
if (someData == null) {
return true;
} else if (someData == '') {
return true;
} else {
return false;
}
}
}
जैसा कि एक देख सकता है, यह विधि केवल एक है if
तीन शाखाओं वाला बयान। एक प्रभावी परीक्षण वर्ग लिखने के लिए, हमें प्रत्येक शाखा को कोड के साथ कवर करना होगा, और यह सुनिश्चित करने के लिए System.assertEquals(...)
कथनों का उपयोग करना होगा कि यह सुनिश्चित करने के लिए कि IsBlank(...)
से उचित डेटा प्राप्त हुआ है।
@isTest
public class SomeClass_test {
@isTest
public static void SomeClass_IsBlank_test() {
String testData;
// SomeClass.IsBlank() returns true for Null values
System.assertEquals(true, SomeClass.IsBlank(testData));
testData = '';
// SomeClass.IsBlank() returns true for empty strings
System.assertEquals(true, SomeClass.IsBlank(testData));
testData = 'someData';
// SomeClass.IsBlank() returns false when testData is neither
// an empty string nor Null
System.assertEquals(false, SomeClass.IsBlank(testData));
}
}
TestSetup का उपयोग करना
आप कोड लिखने के लिए @testSetup
साथ एनोटेट की गई विधि का उपयोग कर सकते हैं जिसे प्रत्येक परीक्षण चलाने से पहले निष्पादित किया जाएगा:
public class AccountService {
public static Account fetchAccount() {
return [ SELECT Id, Name FROM Account LIMIT 1 ];
}
}
@isTest
public class AccountServiceTest {
private static final String TEST_ACCOUNT_NAME = 'My Test Account';
@testSetup
public static void setUpAccountData() {
Account a = new Account(Name = TEST_ACCOUNT_NAME);
}
@isTest
public static void testFetchAccount() {
Account a = AccountService.fetchAccount();
System.assertNotEquals(null, a, 'Account should not be null');
System.assertEquals(TEST_ACCOUNT_NAME, a.Name, 'Account name should be correct');
}
}
स्थिर ब्लॉकों का उपयोग करना
जब आप परीक्षणों को निष्पादित करने से पहले चलाने के लिए एक विधि नामित करने के लिए @testSetup
एनोटेशन का उपयोग कर सकते हैं, तो यह विधि आमतौर पर केवल एक बार चलाई जाएगी। यदि आपको प्रत्येक परीक्षण से पहले कोड की आवश्यकता है, तो आप एक static
ब्लॉक का उपयोग कर सकते हैं:
@isTest
public class MyTest {
static {
// code here will be run before each test is executed
}
}
जोर देने के तरीके
System.assert
का उपयोग यह जांचने के लिए किया जा सकता है कि बूलियन अभिव्यक्ति सही का मूल्यांकन करती है:
System.assert(Service.isActive());
System.assert(!Service.getItems().isEmpty(), 'items should not be empty');
System.assertEquals
और System.assertNotEquals
का उपयोग दो मूल्यों की समानता की जांच करने के लिए किया जा सकता है। अपेक्षित मान पहले पैरामीटर के रूप में पारित किया जाता है, और परीक्षण के तहत मूल्य दूसरे के रूप में पारित किया जाता है।
System.assertEquals(4, Service.getItems().size());
System.assertNotEquals(null, Service.getItems());
// failure messages are optional:
System.assertEquals(true, Service.doWork(), 'doWork should return true');
System.assertNotEquals(null, Service.doWork(), 'doWork should not be null');