2017-05-21 17 views
6

मैंने जो गतिशील परीक्षणों को देखा है, लगभग सभी उदाहरणों को फिर से तैयार किया जा सकता है और पैरामीटरयुक्त परीक्षणों का उपयोग करके लिखा जा सकता है। तो, जो एक व्यावहारिक परिदृश्य है जहां गतिशील परीक्षण एकमात्र विकल्प हैं, या कम से कम, पैरामीटर परीक्षण से बेहतर उपयुक्त हैं।जुनीट 5 में पैरामीटरेटेड टेस्ट से डायनेमिक टेस्ट कैसे अलग हैं?

जुनीट 5 दस्तावेज़ों में एकमात्र "वास्तव में" गतिशील परीक्षण उदाहरण व्यावहारिक नहीं है।

कोई विचार?

+1

अच्छा सवाल। चूंकि यह गतिशील परीक्षणों के रूप में वास्तव में स्पष्ट अनुप्रयोग नहीं है, विशेष रूप से क्योंकि उन्हें एक्सटेंशन बिंदु से समर्थित नहीं किया जाता है (देखें [# 371] (https://github.com/junit-team/junit5/issues/371)) । – Nicolai

+0

हमारी टिप्पणी @ निकोलई के लिए धन्यवाद। मैंने आपके इनपुट पढ़े और मुझे लगता है कि मैं समझता हूं कि आपका बिंदु क्या है। हालांकि, यहां मेरा मुद्दा गतिशील परीक्षण बनाने के तरीके के बारे में नहीं है, केवल उपयोग के मामले को समझने के लिए जहां गतिशील परीक्षण विशेष रूप से उपयोगी हैं। मुझे यकीन नहीं है कि विस्तारित बैक गतिशील परीक्षण इसका उत्तर कैसे देगा। मैं जानना चाहता हूं कि डेवलपर्स गतिशील परीक्षण शुरू करके हल करने की कोशिश कर रहे हैं। – Yasin

+1

उत्तरार्द्ध के बारे में: गतिशील परीक्षण पैरामीटर परीक्षण से पहले लंबे समय से बनाए गए थे। उन्हें शामिल करने का कारण यह सुनिश्चित करना था कि टूल रखरखाव इस तथ्य से अवगत हैं कि परीक्षण समय पर परीक्षण किए जा सकते हैं। ओह, मुझे अब याद है कि एक कारण [लैम्ब्डा परीक्षण] (https://blog.codefx.org/libraries/junit-5-dynamic-tests/#Lambda-Tests) को अनुमति देना था। – Nicolai

उत्तर

4

DynamicTest के विपरीत, ParameterizedTest कोर junit-jupiter-api का हिस्सा नहीं है लेकिन (3.12.1. Required Setup देखें) junit-jupiter-params नाम के एक अलग विरूपण साक्ष्य में है। ऐसा इसलिए है क्योंकि जुनीट 5 के मूल सिद्धांतों में से एक है "सुविधाओं पर विस्तार बिंदु पसंद करना" (Core Principles · junit-team/junit5 Wiki)।

जुनीट बृहस्पति एपीआई परिभाषित करता है कि जुनीट के विस्तार बिंदु के रूप में गतिशील परीक्षण कैसे बनाएं और पंजीकरण करें, जबकि जुनीट बृहस्पति पैराम्स पैरामीटर परीक्षणों को परिभाषित करने के लिए उच्च स्तरीय एपीआई को परिभाषित करता है।

JUnit 5.0 M5 Milestone की थीम वर्तमान में "गतिशील कंटेनर और मामूली एपीआई परिवर्तन" है। इन अपेक्षित परिवर्तनों के साथ परीक्षण डेवलपर्स न केवल गतिशील परीक्षण बनाने में सक्षम होंगे बल्कि गतिशील परीक्षणों के पेड़ (अन्य गतिशील कंटेनर और/या परीक्षण वाले गतिशील कंटेनर) जो कुछ ऐसा है जो वर्तमान में पैरामीराइज्ड परीक्षणों के साथ नहीं किया जा सकता है। ऐसा लगता है, मुझे लगता है, विनिर्देश-जैसे परीक्षण बनाने के लिए बहुत उपयोगी है।

संक्षेप में, जैसा कि मैंने इसे समझ लिया है, यह विचार है कि पहले "निम्न-स्तरीय" एपीआई (जैसे गतिशील कंटेनर/परीक्षण) के माध्यम से कोर एक्सटेंशन पॉइंट जारी करना है और फिर तृतीय पक्षों को उनके द्वारा लीवरेज एक्सटेंशन बनाने के लिए प्रोत्साहित करना और प्रोत्साहित करना है (उदाहरण के लिए पैरामीटर परीक्षण)।

+0

पर बनाया जा सकता है, क्या आप कृपया "पैरामीटर परीक्षणों के लिए समर्थन हुड के तहत गतिशील परीक्षण API का उपयोग करते हैं" पर विस्तार से बता सकते हैं। मैं समझता हूं कि गतिशील परीक्षण जीवन चक्र कॉलबैक का समर्थन नहीं करते हैं, लेकिन पैरामीटर परीक्षण करता है। शायद मुझे स्रोत कोड पर एक नज़र रखना होगा? – Yasin

+0

@ यासिन, मैं पैरामीटर परीक्षणों के लिए कोड के _all_ से परिचित नहीं हूं लेकिन मुझे पता है कि प्रत्येक टेस्ट केस कॉल करता है ['TestExecutionListener.dynamicTestRegistered'] (http://junit.org/junit5/docs/current/api/org /junit/platform/launcher/TestExecutionListener.html#dynamicTestRegistered-org.junit.platform.launcher.TestIdentifier-)। – mfulton26

+2

कुछ और कथन के माध्यम से इसे सोचने के बाद यह पूरी तरह सत्य नहीं लगता है। दोनों एपीआई एक ही कोड में फनल करते हैं लेकिन शुरुआत में मैंने एक दूसरे से अधिक स्वतंत्र दिखाई देते हैं। – mfulton26

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