2012-06-22 8 views
93

मुझे पता है कि एक एकल परीक्षण एसबीटी में चल रहा है, से भाग गया जा सकता है,एसबीटी में स्कैलाटेस्ट: टैग के बिना एकल परीक्षण चलाने का कोई तरीका है?

test-only *class -- -n Tag 

वहाँ टैग के बिना एक परीक्षण चलाने के लिए एसबीटी/scalatest बताने का एक तरीका है? उदाहरण के लिए:

test-only *class -- -X 2 

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

+1

आपका विषय कहते हैं, "Scalatest-एसबीटी"। जब एसबीटी हाइफेनेटेड होता है तो लोग आमतौर पर प्लगइन के बारे में सोचते हैं। लेकिन, बस स्पष्ट करने के लिए, आप एसबीटी 0.12 की तरह एसबीटी के आधुनिक संस्करण से [स्कैलाटेस्ट] (http://www.scalatest.org/) का उपयोग करने के बारे में बात कर रहे हैं, नहीं [joshcough/scalatest-sbt] (https: // github.com/joshcough/scalatest-sbt) एसबीटी 0.5.2-पी 3 के लिए एक प्लगइन 4 साल पहले लिखा गया था। सही बात? –

+0

सही। यह एक पुराना सवाल है और तब से मैंने यह पता लगाया है कि नहीं, यह संभव नहीं है (जहां तक ​​मुझे पता है)। अगर किसी ने वास्तव में एक तरीका पता लगाने में कामयाब रहा है, तो मैंने इसे बंद नहीं किया है, लेकिन अब मुझे जवाब देने की आवश्यकता नहीं है। – Nacht

+0

इस पर एक धागा है (बिल वेनेर्स और मार्क हाराह दोनों से भागीदारी के साथ) https://groups.google.com/forum/#!topic/scalatest-users/1oRMkudFAXM पर, लेकिन अभी तक कोई समाधान नहीं है –

उत्तर

120

यह अब समर्थित है:

testOnly *MySuite -- -z foo 

केवल चलाने के लिए परीक्षण जिनके नाम में सबस्ट्रिंग "foo" शामिल है।

सबस्ट्रिंग के बजाए सटीक मिलान के लिए, -z के बजाय -t का उपयोग करें।

+2

का उपयोग कर सकता हूं यदि 'testOnly * MySuite' का उपयोग करते हुए मेरे लिए काम करता है, न केवल' test-only * MySuite' – cevaris

+2

फिक्स्ड, धन्यवाद @cevaris। एसबीटी 0.13 हाइफ़न शैली से ऊंट शैली में बदल गया। –

+0

@ सेठटिस्यू क्या आप एक कामकाजी उदाहरण पोस्ट करने में सक्षम होंगे जो सटीक मिलान के लिए '-t' का उपयोग करता है? मैं इसे काम करने में असमर्थ हूं। – rmin

39

मुझे टेस्ट क्लास में एक अनचाहे परीक्षण चलाने का कोई तरीका नहीं दिख रहा है, लेकिन मैं अपना वर्कफ़्लो प्रदान कर रहा हूं क्योंकि यह इस प्रश्न में चलने वाले किसी भी व्यक्ति के लिए उपयोगी प्रतीत होता है।

एक एसबीटी सत्र के भीतर से:

test:test-only *YourTestClass 

(तारांकन एक वाइल्डकार्ड है, तो पूर्ण पथ com.example.specs.YourTestClass निर्दिष्ट कर सकते हैं।)

कि परीक्षण वर्ग के भीतर सभी परीक्षणों निष्पादित किया जाएगा। मुमकिन है आप में नाकाम रहने के परीक्षण के साथ सबसे अधिक चिंतित हैं, इसलिए किसी भी नाकाम रहने के कार्यान्वयन दुरुस्त करने के बाद चलाएँ:

test:test-quick 

... जो केवल कि विफल परीक्षण निष्पादित करेंगे। (सबसे हाल ही में निष्पादित test:test-only कमांड को दोहराना इस मामले में test:test-quick जैसा ही होगा, लेकिन यदि आप उचित परीक्षण कक्षाओं में अपनी परीक्षा विधियों को तोड़ते हैं तो आप test:test-quick को असफल परीक्षणों को फिर से चलाने के लिए एक अधिक प्रभावी तरीका बनाने के लिए वाइल्डकार्ड का उपयोग कर सकते हैं।)

ध्यान दें कि स्कैलाटेस्ट में परीक्षण के लिए नामांकन एक टेस्ट क्लास है, एक विशिष्ट परीक्षण विधि नहीं है, इसलिए सभी अनगिनत विधियां निष्पादित की जाती हैं।

यदि आपके पास टेस्ट क्लास में बहुत से परीक्षण विधियां हैं तो उन्हें अलग-अलग कक्षाओं में विभाजित करें या उन्हें उचित रूप से टैग करें। साथ (ScalaTest 2.1.3 के बाद से) (यह एक संकेत हो सकता है कि परीक्षण के अंतर्गत कक्षा single responsibility principle के उल्लंघन में है और एक रिफैक्टरिंग इस्तेमाल कर सकते हैं।)

+4

जिसका सामना करना पड़ रहा है" कोई परीक्षण निष्पादित नहीं किया गया ":' * YourTestClass' कक्षा का नाम होना चाहिए। फ़ाइल नाम नहीं है। – MKatleast3

+0

@ MKatleast3 मैं आपको 100 बार – dangonfast

30

मैं अन्य उत्तर

आप वर्ग आप परीक्षण करना चाहते हैं का नाम निर्दिष्ट करना होगा साथ देने के लिए एक ठोस उदाहरण जोड़ना चाहते थे, इसलिए यदि आप निम्नलिखित परियोजना है (यह एक खेल परियोजना है):

Play Project

आप एसबीटी कंसोल से निम्न आदेश चलाकर बस Login परीक्षण परीक्षण कर सकते हैं:

test:testOnly *LoginServiceSpec 

आप एसबीटी सांत्वना बाहर से आदेश चला रहे हैं, तो आपको निम्न करना होगा:

sbt "test:testOnly *LoginServiceSpec" 
+11

उपरोक्त क्योंकि स्पष्ट रूप से डबल कोट आवश्यक हैं: '' 'sbt" test: testOnly * LoginServiceSpec "' '' –

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

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