2012-02-01 11 views
5

के साथ पुनरावृत्ति को कम करने के लिए गेरकिन "या" वाक्यविन्यास क्या कोई इसे प्राप्त करने के तरीके के बारे में जानता है या नहीं, उन्हें लगता है कि यह एक अच्छा विचार है। पुनरावृत्ति को कम करने के लिए गेरकिन में एक या शैली सिंटैक्स रखने के लिए, लेकिन मानव पठनीयता को बनाए रखने (उम्मीद है)। मैं उन मामलों के बारे में सोच रहा हूं जहां एकाधिक संयोजनों के प्रत्येक संयोजन के साथ खंड संयोजन का विस्तार किया जाता है। जैसेबीडीडी

Scenario: TestCopy 
    Given Some text is selected 
    When The user presses Ctrl + C 
    OR the user right clicks and selects copy 
    OR the user selects Edit + Copy 
    Then the text is copied to the clipboard 

यह वही दिया के साथ प्रत्येक में 3 टेस्ट मैचों और उसके बाद के रूप में चलाने होगा, लेकिन एक के साथ या सेट से है। मुझे लगता है कि यह कब क्लॉज के लिए किसी प्लेसहोल्डर के साथ टेम्पलेट का उपयोग करके प्राप्त किया जा सकता था, लेकिन मुझे लगता है कि यह अधिक पठनीय है और एन एक्स एम परीक्षणों के उत्पादन के साथ-साथ दिए गए उपयोग में या इसका उपयोग करने की अनुमति दे सकता है। रूपरेखा के साथ आपको अभी भी एन एक्स एम पंक्तियों की आवश्यकता होगी।

  • इस
  • करने के लिए एक बेहतर तरीका यह बेहतर अभ्यास स्पष्ट रूप से कॉपी करने के लिए और पेस्ट (मैं रखरखाव में सोच रहा हूँ गंदा मिल सकता है)
  • अन्य व्यवस्थाएं इस का समर्थन (मैं फिट के साथ लगता है है आप एक कस्टम टेबल लिख सकता है लेकिन फिर यह ओवरहेड जैसा लगता है)

धन्यवाद।

+0

हम अभी इस के साथ आए हैं। गेरकिन + – mcintyre321

उत्तर

9

परिदृश्यों पर इस विस्तार स्तर (इन चाबियाँ दबाकर, दायाँ क्लिक) का उपयोग करने की अनुशंसा नहीं की जाती है। यह उन्हें, जैसा कि आप महसूस करते हैं, लंबा और दोहराव देता है। साथ ही, आमतौर पर यह जानकारी नहीं है कि हितधारकों की आवश्यकता होगी या वैसे भी चाहिए।

सबसे अच्छा कदम परिभाषाओं पर कार्यान्वयन विवरण छिपाना होगा। आपका परिदृश्य कुछ ऐसा होगा:

Scenario: TestCopy 
    Given some text is selected 
    When the user copies the selected text 
    Then the selected text is copied to the clipboard 

और पाठ की प्रतिलिपि बनाने के विभिन्न तरीके तीसरे चरण की परिभाषा पर जाएंगे।

+1

यहां @ मार्सेलो से पूरी तरह से सहमत हैं! इस बारे में न लिखें कि उपयोगकर्ता को क्या चाहिए इसकी पूर्ति के लिए सिस्टम लागू किया गया है। उच्च स्तर की अवधारणा को खोजने का प्रयास करें जैसे कि "उपयोगकर्ता चयनित टेक्स्ट कॉपी करता है"। काफी बेहतर! –

+0

@MarcusHammarberg मुझे भी "कैसे" के विरोध में "क्या" का उपयोग करके परिदृश्य लिखना सिखाया गया है। हालांकि, अगर सिस्टम में किसी क्रिया को निष्पादित करने का एक और तरीका है (इस मामले में टेक्स्ट कॉपी करना), तो SpecFlow का उपयोग करके इन अलग-अलग विकल्पों का परीक्षण कैसे किया जाना चाहिए? इसलिए मुझे क्यों लगता है कि विभिन्न विकल्पों के माध्यम से परीक्षण करने वाला परीक्षण सही लगता है। –

11

आप एक Scenario Outline में Scenario Outlines:

Scenario Outline: TestCopy 
    Given Some text is selected 
    When <Copy operation executed> 
    Then the text is copied to the clipboard 

Examples: 
    | Copy operation executed    | 
    | The user presses Ctrl + C    | 
    | the user right clicks and selects copy | 
    | the user selects Edit + Copy   | 

के साथ एक परिदृश्य से कई परीक्षण generatd कर सकते हैं मूल रूप से है, जिसमें प्रदान की Examples से भर जाता है खाका बनाने के।
ऊपर के उदाहरण Specflow ही Given और Then साथ और 3 अलग When के साथ 3 टेस्ट मैचों उत्पन्न होगा के लिए:

When The user presses Ctrl + C 
When the user right clicks and selects copy 
When the user selects Edit + Copy 
4

nxm परिदृश्य के लिए के रूप में, मैं उस तरह लगता है जब आप क्या करना चाहते हैं कि, आप शायद इसे गलत कर रहे हैं।

आप एक स्पष्ट उदाहरण नहीं दिया है, लेकिन आप की तरह कुछ चाहता हूँ लगता है:

Given A block of text is selected 
OR An image is selected 
OR An image and some text is selected 
When The user presses Ctrl + C 
OR the user right clicks and selects copy 
OR the user selects Edit + Copy 

अपने Then खंड लेखन एक बुरा सपना हो जाएगा।

इसके बजाय, दो परीक्षणों को आजमाएं ... पहले, जैसा कि @nemesv द्वारा सुझाया गया है - लेकिन "टेक्स्ट चयन" के साथ एक सामान्य "चयन" द्वारा प्रतिस्थापित किया गया है।

Scenario Outline: TestCopy 
    Given I have made a selection 
    When <Copy operation executed> 
    Then my selection is copied to the clipboard 

Examples: 
    | Copy operation executed    | 
    | The user presses Ctrl + C    | 
    | the user right clicks and selects copy | 
    | the user selects Edit + Copy   | 

फिर आप एक एक या अधिक अतिरिक्त के साथ "क्या एक वैध चयन बनाता है" निपटने के लिए परीक्षण लिख सकते हैं - और यह शायद एक फीचर से आप के स्वतंत्र प्रतिलिपि फ़ंक्शन का उपयोग करें कि - उदाहरण के लिए, क्या तब होता है जब आप कोई चयन करते हैं और हटाते हैं ... या ctrl-v ... या खींचें और छोड़ें?

आप एक प्राप्त करने के दौरान सभी वैध कार्यों के खिलाफ चयन करने के सभी वैध तरीकों को गुणा करने की सड़क को नीचे नहीं जाना चाहते हैं।

0

मैं कहूंगा कि प्रतिलिपि बनाना और पेस्ट करना अनिवार्य रूप से एक ही विधि में एकाधिक कॉल करना है। आप एक ही चरण निश्चितता का उपयोग कर रहे हैं, तो क्यों न केवल उन्हें कई बार कॉल करें। कॉपी/पेस्ट, मेरे लिए, जो आप चाहते हैं उसे पूरा करता है।

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