2011-11-05 31 views
14

का उपयोग करके मैंने अभी (आज) पहली बार SpecFlow की कोशिश की है। मैं वीएस -2010 प्रो में एक नई कक्षा पुस्तकालय बनाकर और एक स्पेकफ़्लो फ़ीचर परिभाषा फ़ाइल जोड़कर खेल रहा हूं।SpecFlow गलत तरीके से NUnit

बात यह है कि एकीकरण विभिन्न त्रुटियों के साथ ठीक से काम नहीं कर रहा है। मैंने एमएसटेस्ट को टेस्ट रनर के रूप में चुना है, क्योंकि मुझे एनयूनीट के साथ परेशान नहीं किया जा सकता है (मैं लंबी अवधि में एनयूनीट का उपयोग करना चाहता हूं लेकिन फिलहाल मैं कुछ बीडीडी कोड काम करना चाहता हूं)। जेनरेट की गई कोड फाइलें एनयूनीट का संदर्भ जारी रखती हैं - जो स्पष्ट रूप से गलत है, क्योंकि मैंने बस स्पेसफ्लो को एमएसटेस्ट का उपयोग करने के लिए कहा है। मैंने टूल्स पीढ़ी को दोबारा शुरू करने के बारे में सोचने के बारे में सोच सकते हैं, जिसमें टूल्स> विकल्प> स्पेकफ्लो में चुने गए एमएसटेस्ट विकल्प के साथ एक ब्रांड नई क्लास लाइब्रेरी प्रोजेक्ट बनाना शामिल है।

यदि मैं परीक्षण धावक फ़ील्ड को 'ऑटो' पर सेट करता हूं और एक फीचर फ़ाइल पर राइट-क्लिक करता हूं, तो 'स्पीकफ्लो परिदृश्य चलाएं' चुनें, मुझे एक त्रुटि संदेश मिलता है "मिलान परीक्षण धावक नहीं मिल सका"।

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

मैं क्या गलत कर रहा हूं? दस्तावेज उपयोगी नहीं है, और जहां तक ​​मैं देख सकता हूं, कोई FAQ नहीं है।

संपादित करें # 1: मैं स्थापित किया है कि वास्तविक सेटिंग मैं तलाश कर रहा हूँ क्षेत्र <unitTestProvider name="MsTest" /> का उपयोग कर App.Config का उपयोग कर दी जाती है। मैं देख सकता हूं कि क्या हुआ - विजुअल स्टूडियो विकल्प मेनू में फ़ील्ड उस प्रोजेक्ट को संशोधित नहीं कर रहा है जिस पर आप वर्तमान में काम कर रहे हैं। बात यह है कि यह ऐसा लगता है कि वह क्षेत्र कुछ भी नहीं करता है। मैंने अब स्पेसफ्लो को एमएसटेस्ट कक्षाएं उत्पन्न करने और एमएसटीएस्ट रनर का उपयोग करके चलाने के लिए राजी किया है।

तो अब सवाल थोड़ा अलग हो गया है: क्या उपकरण (विकल्प> स्पेकफ़्लो> टेस्ट रनर टूल फ़ील्ड क्या करता है?

उत्तर

1

मैं कभी भी विजुअल स्टूडियो से स्पीकफ़्लो काम करने में सक्षम नहीं था, मैंने कुछ समय बिताया लेकिन उस पर कभी भी नहीं गए। हालांकि मुझे विजुअल स्टूडियो 2010 में न्यूटिट स्थापित करने पर these निर्देश मिले और मैं अच्छे प्रभाव के साथ अपने स्पेकफ़्लो परीक्षण चलाने के लिए इस शॉर्टकट का उपयोग करता हूं।

कुल मिलाकर हम कई परीक्षण चलाने के लिए पावरशेल का उपयोग करते हैं और मैं एनयूनीट कमांड लाइन धावक और स्पीकफ़्लो रिपोर्ट जनरेटर को एक स्क्रिप्ट में शामिल करने में सक्षम था जिसे मैं आसानी से चला सकता हूं।

+0

ग्रेट टिप, धन्यवाद! मैंने मेनू बटन को तुरंत स्थापित किया क्योंकि यह बहुत उपयोगी लग रहा था, इसलिए इस पूछताछ की इस पंक्ति ने एक सुविधाजनक साइड-लाभ प्रदान किया है। हालांकि SpecFlow के बारे में शर्म आती है, ऐसा लगता है कि मैं ऐसा करने के लिए केवल एकमात्र ऐसा नहीं हूं जो इसे करने के लिए किया जाता है। वास्तविक उत्पाद काम करता है, लेकिन वीएस एकीकरण बिल्कुल सही नहीं है। –

+0

हाँ, मेरी इच्छा है कि यह अधिक एकीकृत हो लेकिन मैं इसके लिए अभी ठीक हूं। इसका उपयोग अभी मेरे लिए लाभ से अधिक है। खुशी है कि टिप मदद करता है! – MichaelF

+0

क्या आपने specflow इंस्टॉलर चलाया है या आपने इसे NuGet का उपयोग करके अपने प्रोजेक्ट में जोड़ा है? इंस्टॉलर विजुअल स्टूडियो एकीकरण जैसे सभी एकीकरण घटकों को स्थापित करेगा जहां nuget इंस्टॉल केवल आवश्यक संदर्भ जोड़ता है। –

9

वीएस -2010 के साथ सही मूल्य एमएसटेस्ट.2010 दस्तावेज के रूप में एमएसटेस्ट नहीं है। अपने नवीनतम प्रश्न करने के लिए (परीक्षण विधानसभा के लिए) अपने app.config बदलें और यह ठीक काम करेंगे (कम से कम SpecFlow 1.8 के साथ)

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    <section name="specFlow" type="TechTalk.SpecFlow.Configuration.ConfigurationSectionHandler, TechTalk.SpecFlow" /> 
    </configSections> 
    <specFlow> 
     <unitTestProvider name="MsTest.2010" /> 
     <!-- For additional details on SpecFlow configuration options see https://github.com/techtalk/SpecFlow/wiki/Configuration --> 
    </specFlow> 
</configuration> 
7

जवाब में। सेटिंग "टूल्स> विकल्प> स्पेकफ़्लो> टेस्ट रनर टूल" यह सेटिंग नियंत्रित करती है कि वास्तव में परीक्षण कैसे चलाएंगे, न कि परीक्षण कोड उत्पन्न करेगा। यदि यह ऑटो पर सेट है तो मेरा मानना ​​है कि यह App.config फ़ाइल को देखेगा जहां आपने यूनिटटेस्टप्रोवाइडर सेट किया है यह निर्धारित करने के लिए कि परीक्षण चलाने के लिए सबसे अच्छा टूल क्या है। SpecFlow के समान लोगों द्वारा किए गए एक वैकल्पिक टेस्ट धावक SpecRun http://www.specrun.com/

तो जब आप परीक्षण चलाने के लिए जाते हैं तो यह इस विकल्प का उपयोग करेगा।आप की खोज की है के रूप में यद्यपि कोड जनरेटर निर्धारित करने के लिए परीक्षण के लिए किस प्रकार यह (MSTest/nunit ..)

उत्पन्न करनी चाहिए यदि आप specfow संस्थापक (https://github.com/downloads/techtalk/SpecFlow/SpecFlowSetup_v1.8.1.msi) सभी दृश्य स्टूडियो एकता घटकों जब स्थापित करने के लिए भाग गया कॉन्फ़िग फ़ाइल का उपयोग करता है आप App.config फ़ाइल को बदलते हैं जो सामान्य रूप से नए प्रदाता का उपयोग करके सुविधाओं को पुन: उत्पन्न करने के लिए प्रोप करता है। ऐसा करने का मैन्युअल तरीका फ़ीचर पर राइट क्लिक करना है और "कस्टम कस्टम रन" चुनें

दस्तावेज़ीकरण के संबंध में आपको गिट हब विकी मिली है? https://github.com/techtalk/SpecFlow/wiki/Documentation

2

हम स्पेसफ़्लो स्वीकृति परीक्षण के लिए एक धावक के रूप में रीशेपर का उपयोग कर रहे हैं; यह बॉक्स के ठीक बाहर काम किया। हालांकि ReSharper निःशुल्क नहीं है, लेकिन यह हर पैसा लायक है ...

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