2016-12-19 6 views
7

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

import org.scalatest.FunSuite 
import org.scalatest.tagobjects.Slow 

class DemoTestSuite extends FunSuite { 
    test("demo test tagged as slow", Slow) { 
    assert(1 + 1 === 2) 
    } 

    test("demo untagged test") { 
    assert(1 + 1 === 2) 
    } 
} 

डिफ़ॉल्ट रूप से, sbt test दोनों टैग और टैग नहीं किए गए परीक्षण चलेंगे:

इस टेस्ट स्वीट को देखते हुए।

अगर मैं अपने build.sbt को निम्नलिखित जोड़ें:

testOptions in Test += Tests.Argument("-l", "org.scalatest.tags.Slow") 

तब मैं अपने वांछित डिफ़ॉल्ट व्यवहार टैग नहीं किए गए परीक्षण चलाने के लिए और धीरे टैग किए गए परीक्षण नहीं चलेंगे जहां मिलता है।

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

+0

क्या आपने [इस आलेख] की जांच की है (http://alvinalexander.com/scala/scalatest-mark-tests-tags-to-include-exclude-sbt) बाहर? –

+1

@ evan058, हाँ, और यह काम करता है, लेकिन यह सब कुछ चलाने के लिए डिफ़ॉल्ट व्यवहार छोड़ देता है। मैं धीमी परीक्षण को बाहर करने के लिए डिफ़ॉल्ट चाहते हैं। – clay

+1

क्या आपने 'testOnly org.myorg। * - -n org.scalatest.tags.Slow' की कोशिश की है? [इस पृष्ठ] से (http://www.scalatest.org/user_guide/using_scalatest_with_sbt), अनुभाग "टैग के साथ टेस्ट शामिल करें और बहिष्कृत करें"। –

उत्तर

1

मैं ने वही समस्या थी: मैं परीक्षण है कि डिफ़ॉल्ट रूप से अक्षम हैं, लेकिन जारी प्रक्रिया में चलाने के लिए चाहता था। मैंने इसे custom test configuration बनाकर हल किया और testOptions को विभिन्न क्षेत्रों में सेट किया।

lazy val Slow = config("slow").extend(Test) 
configs(Slow) 
inConfig(Slow)(Defaults.testTasks) 

अब डिफ़ॉल्ट रूप से बाहर निकालने के धीमी गति से परीक्षण:: तो अपने मामले के लिए इस समाधान को अपनाने, यह इन पंक्तियों के साथ कुछ (अपने build.sbt में) होना चाहिए

testOptions in Test += Tests.Argument("-l", "org.scalatest.tags.Slow") 

लेकिन Slow दायरे में नहीं है उन्हें बाहर निकालने और केवल उन्हें चलाने: अब

testOptions in Slow -= Tests.Argument("-l", "org.scalatest.tags.Slow") 
testOptions in Slow += Tests.Argument("-n", "org.scalatest.tags.Slow") 

जब आप एसबीटी में test चलाने के लिए, यह धीमी गति से परीक्षण के अलावा सब कुछ चला जाएगा और जब आप चलाने slow:test यह केवल धीमी परीक्षण चलाएगा।

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

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