2016-12-13 13 views
13

मैं जुनीट 4 परीक्षा लिख ​​रहा हूं जिसमें मैं अस्थायी फ़ोल्डर नियम का उपयोग कर रहा हूं। ऐसा लगता है कि यह @Rule और @ClassRule दोनों के साथ ठीक काम करता है। Junit @Rule और @ClassRule के बीच क्या अंतर है? मुझे एक का उपयोग क्यों करना चाहिए और दूसरा नहीं?जुनीट @ रूले और @ क्लासरूले

उत्तर

23

जब आपके पास कक्षा में एक से अधिक परीक्षण विधि होती है तो भेद स्पष्ट हो जाता है।

@ClassRule में before() विधि किसी भी परीक्षण विधियों से पहले चलती है। फिर सभी परीक्षण विधियां चलती हैं, और अंततः नियम after() विधि। तो यदि आपके पास कक्षा में पांच परीक्षण विधियां हैं, before() और after() अभी भी प्रत्येक बार एक बार चलेंगे।

@ClassRule एक स्थिर विधि पर लागू होता है, और इसमें सभी सीमाएं अंतर्निहित हैं।

@Rule नियमों को apply() विधि के माध्यम से चलाने का कारण बनता है, जो लक्ष्य विधि से पहले और बाद में चीजें कर सकते हैं। यदि आपके पास पांच परीक्षण विधियां हैं, तो नियम के apply() को प्रत्येक विधि के चारों ओर एक रैपर के रूप में पांच बार कहा जाता है।

@ClassRule का उपयोग करें ताकि सभी टेस्ट विधियों द्वारा पुन: उपयोग किया जा सके, यदि आप इसे स्थिर विधि में प्राप्त कर सकते हैं।

प्रत्येक परीक्षण विधि के लिए कुछ नया सेट करने या रीसेट करने के लिए @Rule का उपयोग करें।

1

@Rule को @BeforeClass से पहले चलाने के लिए सेट अप नहीं किया जा सकता है।

जबकि @ClassRule स्थैतिक विधि पर होना चाहिए।

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