मैंने JUnit का उचित उपयोग (या कम से कम प्रलेखन) बहुत भ्रामक पाया है। यह प्रश्न भविष्य के संदर्भ के रूप में और वास्तविक प्रश्न के रूप में दोनों कार्य करता है।
यदि मैंने सही ढंग से समझा है, तो JUnit परीक्षण बनाने और चलाने के लिए दो मुख्य दृष्टिकोण हैं:
दृष्टिकोण A (JUnit 3-शैली): एक क्लास बनाएं जो TestCase का विस्तार करता है, और शब्द के साथ परीक्षण विधियों को शुरू करें test
। कक्षा को ज्यूनिट टेस्ट (ग्रहण में) के test
रूप में चलाने पर , शब्द के साथ शुरू होने वाली सभी विधियाँ स्वचालित रूप से चलती हैं।
import junit.framework.TestCase;
public class DummyTestA extends TestCase {
public void testSum() {
int a = 5;
int b = 10;
int result = a + b;
assertEquals(15, result);
}
}
दृष्टिकोण बी (JUnit 4-शैली): एक 'सामान्य' वर्ग बनाएं और @Test
विधि के लिए एनोटेशन प्रस्तुत करें। ध्यान दें कि आपको शब्द के साथ विधि शुरू करने की आवश्यकता नहीं है test
।
import org.junit.*;
import static org.junit.Assert.*;
public class DummyTestB {
@Test
public void Sum() {
int a = 5;
int b = 10;
int result = a + b;
assertEquals(15, result);
}
}
दोनों को मिलाना एक अच्छा विचार नहीं है, उदाहरण के लिए देखें यह स्टैकओवरफ़्लो प्रश्न :
अब, मेरे प्रश्न:
- पसंदीदा तरीका क्या है , या आप एक के बजाय दूसरे का उपयोग कब करेंगे?
- दृष्टिकोण बी इस तरह @Test एनोटेशन का विस्तार करके अपवादों के परीक्षण के लिए अनुमति देता है
@Test(expected = ArithmeticException.class)
। लेकिन दृष्टिकोण ए का उपयोग करते समय आप अपवादों के लिए कैसे परीक्षण करते हैं? दृष्टिकोण ए का उपयोग करते समय, आप एक परीक्षण सूट में कई परीक्षण कक्षाओं को इस तरह से समूहित कर सकते हैं:
TestSuite suite = new TestSuite("All tests");
suite.addTestSuite(DummyTestA.class);
suite.addTestSuite(DummyTestAbis.class);
लेकिन इसका उपयोग दृष्टिकोण बी के साथ नहीं किया जा सकता है (क्योंकि प्रत्येक टेस्टक्लास को टेस्टासैस को उपवर्ग करना चाहिए)। दृष्टिकोण बी के लिए समूह परीक्षणों का उचित तरीका क्या है?
संपादित करें: मैंने दोनों दृष्टिकोणों में JUnit संस्करण जोड़े हैं
extends TestCase
और फिर प्रत्येक परीक्षा को@Test
केवल चीजों को भ्रमित करने के लिए एनोटेट किया गया है। :)