Java में Testing परिचय
Maria Milusheva
Senior Software Engineer
अब तक हमने प्रोडक्शन कोड लिखने के बाद ही टेस्ट लिखे हैं.
TDD में प्रोडक्शन कोड लिखने से पहले टेस्ट लिखे जाते हैं
TDD क्यों करें?
1. कोई भी प्रोडक्शन कोड लिखने से पहले एक फेल होता टेस्ट लिखना जरूरी है
2. जितना संभव हो उतना छोटा टेस्ट लिखना जरूरी है
3. टेस्ट पास कराने लायक जितना पर्याप्त हो, उससे ज्यादा प्रोडक्शन कोड नहीं लिखना चाहिए
इन्हें क्रम में लागू करना = TDD का एक चक्र
डेवलपमेंट TDD के दोहराए गए चक्रों से आगे बढ़ता है
मान लीजिए हमें एक मेथड लिखना है जो जाँचता है कि कोई integer palindrome है या नहीं
palindromic integers के उदाहरण: 12321, 0, 3333
@Test
public void isPalindrome_nonPalindromicInt_returnsFalse() {
int number = 1234;
assertFalse(isPalindrome(number)); // isPalindrome() is not yet written
}
एक टेस्ट भविष्य के अपने लिए नोट जैसा है, जो प्रोजेक्ट आवश्यकताओं की याद दिलाता है.
public boolean isPalindrome(int num) {
return false; // Write minimal code that fulfills the requirements of the test.
}
अब टेस्ट पास हो रहा है. आप TDD के अगले चक्र पर बढ़ सकते हैं.
नया टेस्ट - फीचर के लिए नई आवश्यकता:
@Test
public void isPalindrome_PalindromicInt_ReturnsTrue() {
int number = 1234321; // Now write a more complex test case.
assertTrue(isPalindrome(number)); // At this point isPalindrome() will fail.
}
public boolean isPalindrome(int num) {
int inverted = 0;
while (num != 0) {
// At every iteration take the last digit of the number using % 10
// and add it to inverted * 10.
inverted = inverted * 10 + num % 10;
// Now that we have processed the last digit, discard it using / 10.
num = num / 10;
}
return inverted;
}
बग ठीक करने में TDD बेहतरीन है!
अभी लिखा मेथड number = -121 के लिए true लौटाता है. यह सही नहीं है!
हम बग दिखाने के लिए एक यूनिट टेस्ट लिखते हैं:
@Test
public void isPalindrome_NegativeNumber_ReturnsFalse() {
int number = -121; // Not a palindrome as -121 is not the same as 121-.
assertFalse(isPalindrome(number));
}
public boolean isPalindrome(int num) {
if (num < 0) {
return false; // We add a clause to return false for negative values.
}
int inverted = 0;
while (num != 0) {
inverted = inverted * 10 + num % 10;
num = num / 10;
}
return inverted;
}
Java में Testing परिचय