हम स्वीकृति परीक्षण के लिए हमारी परियोजना पर ककड़ी का उपयोग करने पर विचार कर रहे हैं।ककड़ी में चश्मा परिभाषा को व्यवस्थित करने के लिए कैसे?
जब हम एक ककड़ी feature
में एक scenario
लिखते हैं, हम Given
, When
और Then
बयान की एक सूची लिखें।
हम cucumber-jvm परियोजना का उपयोग के रूप में, Given
, When
और Then
बयान (JUnit) कक्षाओं में जावा तरीकों से संबंधित हैं।
मैं जानना चाहता हूं कि परियोजना संरचना में Given
/When
/Then
से संबंधित कोड के लिए सबसे अच्छा संगठन क्या है। मेरी मुख्य चिंता एक बड़ी परियोजना पर ककड़ी परीक्षणों का रखरखाव है, जहां परिदृश्य की संख्या काफी महत्वपूर्ण है, और खासकर सुविधाओं के बीच साझा की जाने वाली वस्तुओं के बारे में।
प्रत्येक सुविधा अपने आप JUnit वर्ग से संबंधित है:
मैं कम से कम 2 मुख्य दृष्टिकोण देख सकते हैं। तो अगर मेरे पास
foo/bar/baz.feature
ककड़ी फ़ाइल है, तो मुझेfoo.bar.Baz
जुनीट क्लास को@Given
,@When
और@Then
एनोटेटेड विधियों के साथ रिलीज़ किया जाएगा।पृथक
@Given
,@When
और@Then
"विषयगत" वर्गों और पैकेजों में विधियों। उदाहरण के लिए, यदि मेरे ककड़ी परिदृश्य में मेरे पासGiven user "foo" is logged
है, तो@Given("^user \"([^\"]*)\" is logged$")
एनोटेटेड विधिfoo.user.User
कक्षा विधि में स्थित होगी, लेकिन संभावित रूप से,@When
उसी ककड़ी परिदृश्य में बाद में उपयोग की जाने वाली विधि एक अलग जावा क्लास और पैकेज में होगी (foo.car.RentCar
कहें)।
मेरे लिए, पहला दृष्टिकोण इस तरह से अच्छा लगता है कि मैं आसानी से अपने ककड़ी सुविधाओं और मेरे जावा कोड के बीच संबंध कर सकता हूं। लेकिन दोष यह है कि मेरे पास बहुत सारी अनावश्यकताएं या कोड डुप्लिकेशन हो सकता है। साथ ही, इसे पुनर्निर्मित करने से बचने के लिए संभावित मौजूदा @Given
विधि ढूंढना मुश्किल हो सकता है (आईडीई मदद कर सकता है, लेकिन यहां हम ग्रहण का उपयोग कर रहे हैं, और ऐसा लगता है कि यह मौजूदा Given
कथन की सूची नहीं दे रहा है?)।
अन्य दृष्टिकोण लगता है जब आपके पास Given
स्थितियां कई ककड़ी सुविधा के बीच साझा की जाती हैं, और इस प्रकार मैं कोड डुप्लिकेशन से बचना चाहता हूं। यहां की कमी यह है कि @Given
जावा विधि और Given
ककड़ी कथन के बीच लिंक बनाना मुश्किल हो सकता है (शायद, फिर, आईडीई मदद कर सकता है?)।
मैं ककड़ी के लिए काफी नया हूं, इसलिए शायद मेरा प्रश्न एक अच्छा सवाल नहीं है, और समय और अनुभव के साथ, संरचना स्वयं स्पष्ट होगी, लेकिन मैं इसके उपयोग पर अच्छी प्रतिक्रिया प्राप्त करना चाहता हूं ...
धन्यवाद।
ध्यान दें कि मुझे नहीं लगता कि यह इस प्रश्न का डुप्लिकेट है: http://stackoverflow.com/questions/5023128/cucumber-how-to-organize-a-complex-test-set – romaintaz