2012-01-27 33 views
14

मैं हमारी वेबसाइट पर कुछ धूम्रपान परीक्षण लागू कर रहा हूं।जब परीक्षण किया जाता है - क्या मुझे "कब" चाहिए?

मैं मौजूदा स्वचालित स्वीकृति परीक्षण/उपयोगकर्ता कहानियों के लिए एक दिए गए/कब/फिर प्रारूप का उपयोग कर रहा हूं। कुछ

Given I'm on the homepage

Then I should see "Welcome To The Site"

मुझे याद आ रही: लेकिन अब मैं की एक प्रारंभिक धुआं परीक्षण करना चाहते हैं? क्या यह "ठीक" है जब एक समय नहीं है?

उपकरण उपयोग किया: MVC3, SpecFlow, Nunit, Watin

उत्तर

18

यह देखते हुए, जब या तो के किसी भी छोड़ पूरी तरह से मान्य सिंटैक्स है -

(और यहां तक ​​कि उन्हें किसी भी क्रम में मिश्रण करने specflow परवाह नहीं है।)

हालांकि, पठनीयता के उद्देश्य के लिए है, बजाय छोड़ देते हैं जब मैं अक्सर देखते हुए अलग तरीके से व्यक्त, यानी

When I view the homepage 
Then I should see "Welcome To The Site" 

क्योंकि जब इंगित करने के लिए क्या परीक्षण किया कार्रवाई है माना जाता है मैं, यह देखते हुए खंड को छोड़ देते हैं पसंद करते हैं ।

यदि चरण बाध्यकारी के लिए कोड समान है और आप इसे फिर से उपयोग करना चाहते हैं, तो आप हमेशा अपने दिए गए और मेरे उसी विधि को बाध्य कर सकते हैं।

[Given(@"I'm on the homepage"] 
[When(@"I view the homepage"] 
public void NavigateToHomePage() 
{ 
    ... 
+1

असल में स्पेकफ्लो यह भी ध्यान में नहीं आता है कि क्या आप एक कदम का नाम देते हैं, कब या फिर जब तक यह दाएं/कब/फिर विशेषता के साथ बाध्य होता है। शब्द की पसंद स्वाद है, और ऐसा लगता है कि क्रम में चरणों को निष्पादित करना है। – perfectionist

+0

यह पूर्णतावादी की तरह है; specflow सुविधा फ़ाइल में बताए गए क्रम में चरणों को निष्पादित करें। यह आपके द्वारा उपयोग की जाने वाली विशेषता के बारे में कम परवाह नहीं कर सका। –

+1

दोह - टिप्पणियों में कोई न्यूलाइन नहीं! मैं आपके द्वारा परीक्षण की जा रही कार्रवाई को स्पष्ट रूप से चिह्नित करने के लिए कब-चरण का उपयोग करने की अनुशंसा करता हूं। अधिनियम अधिनियम की व्यवस्था के रूप में। –

-3

आपको किसी समय की आवश्यकता नहीं है। मुझे दिए गए/कब/फिर कीवर्ड जैसे

दिया गया - यह एक तैयारी चरण है, परीक्षण करने में सक्षम होने के लिए आपको कुछ भी करने की आवश्यकता है कब - यह एक ऐसा कार्य होना चाहिए जो आपका परीक्षण सत्यापित करे। फिर - यह तब होना चाहिए जब आप चरणों में किए गए क्रिया के आधार पर अपना परीक्षण सत्यापित करते हैं।

जैसा कि पहले सुझाव था कि वे केवल निष्पादन आदेश को प्रभावित करते हैं। धागा जी उठने के लिए

+0

क्या आपको वास्तव में कहना है कि "आपको कब चाहिए"? क्या आप समझा सकते हैं कि आप ऐसा क्यों सोचते हैं? आपका बाकी जवाब यह सुझाव देता है कि जब महत्वपूर्ण होता है। –

-1

क्षमा याचना ...

मैं शायद के साथ चले गए हैं चाहते हैं:

Given there is a homepage 
When I view the homepage 
Then I should see "Welcome To The Site" 

मैं कम से कम एक Given, When और Then प्रत्येक Scenario में रखना पसंद - नहीं है भूलें कि आप And और But का उपयोग भी कर सकते हैं (यह नहीं कि वे इस परिदृश्य के लिए विशेष रूप से प्रासंगिक हैं)। आप * के साथ एक बुलेट-पॉइंट शैली सूची भी बना सकते हैं।

11

मुझे लगता है कि आप वास्तव में यहां बिंदु खो रहे हैं। आप ALWAYS को When की आवश्यकता है। यही वह चीज है जिसका आपको परीक्षण करना चाहिए! आप क्या छोड़ सकते हैं Givens

आपको क्या कहना चाहिए;

When I visit the homepage 
Then I should see "Welcome To The Site" 

Given When Then वास्तव में एक राज्य मशीन का प्रतिनिधित्व करने का एक अच्छा तरीका है।

Given some initial state (in your case, non) 
When I perform some action (in your case, visiting the homepage) 
Then I have some final state (in your case, text displayed to a user) 

मैं करना चाहता हूँ के बारे में क्या सभी चीजें हैं जो When होने की अनुमति देने के लिए उपस्थित होना चाहिए में सोचना है। आपके मामले में कोई प्रारंभिक स्थिति प्रतीत नहीं होती है। लेकिन विचार करें कि क्या आपके पास कुछ वेब एप्लिकेशन था। मुखपृष्ठ पर जाने से पहले आपको प्रारंभिक स्थिति की आवश्यकता होगी (आपको यह सुनिश्चित करना होगा कि उपयोगकर्ता लॉग इन है);

Given a user (user must be stored in the database) 
And the user is logged in (a logged in user must be in the session) 
When the user visits their homepage 
Then the user should see "Welcome To Your Homepage" 

एक वैकल्पिक परिदृश्य होगा;

Given no logged in user (some people would leave this Given out, but I add it for completness) 
When a user visits their homepage 
Then the user should be redirect to the login page 

के रूप में किसी को सही ढंग से कहा, सबसे BDD उपकरण वास्तव में Given When Then बीच अंतर नहीं है, लेकिन आप चाहिए! 'दी गई कब फिर' की क्रियात्मक प्रकृति को हमारे लिए मनुष्यों को समझने और हमारी विचार प्रक्रियाओं में मदद करने के लिए आसान बना दिया गया है। एक मशीन जो आप चरणों को कॉल करते हैं उससे कम परवाह नहीं कर सकती थी। इस मामले के साथ, आपको हमेशा सही ढंग से कीवर्ड का उपयोग करने के लिए हर संभव प्रयास करना चाहिए।

0

मैं कहूंगा:

Given I have requested the home page 
When the home page loads 
Then I should see 'Welcome To The Site' 
0

मैं पारंपरिक पूर्व की स्थिति के बराबर के रूप में देखते हुए देखते हैं। जब परीक्षण कार्रवाई के बराबर के रूप में। और फिर अपेक्षित परिणाम के बराबर के रूप में।

इसलिए, अगर कोई पूर्व शर्तें हैं, मैं बाहर छोड़ना होगा यह देखते हुए और बस पर ध्यान केंद्रित करते हैं और उसके बाद:

When I'm on the homepage 
Then I should see "Welcome To The Site" 

Specflow आप को देखते हुए करने के लिए उपयोग करते हैं या करते हैं, लेकिन दृश्य स्टूडियो भी अनुमति होगी अनुमति देगा आप एक एकल कक्षा लिखने के लिए जो 1000 लाइनों लंबी है। सिर्फ इसलिए कि दोनों संभव हैं, इसका मतलब यह नहीं है कि या तो 'सही' है।