2015-09-08 5 views
7

मैं स्कैलाटेस्ट के साथ कुछ परीक्षण चला रहा हूं जो सर्वरों का परीक्षण करने के लिए कनेक्शन पर भरोसा करते हैं। मैं वर्तमान में मेरे अपने युक्ति इस के समान बनाया:स्कैलाटेस्ट के साथ प्रोग्रामेटिक रूप से अनदेखा/स्किप कैसे करें?

abstract class ServerDependingSpec extends FlatSpec with Matchers { 

    def serverIsAvailable: Boolean = { 
    // Check if the server is available 
    } 
} 

यह जब इस विधि रिटर्न false अनदेखी करने के लिए (लेकिन असफल नहीं) परीक्षण संभव है?

वर्तमान में मैं एक "hackish" तरीके से कार्य करें:

"Something" should "do something" in { 
    if(serverIsAvailable) { 
    // my test code 
    } 
} 

लेकिन मैं

whenServerAvailable "Something" should "do something" in { 
    // test code 
} 

या

"Something" should "do something" whenServerAvailable { 
    // test code 
} 

कुछ की तरह मुझे लगता है कि मैं अपने कस्टम टैग परिभाषित करना चाहिए चाहते हैं , लेकिन मैं केवल in या ignore के स्रोत कोड का संदर्भ ले सकता हूं और मुझे समझ में नहीं आता कि मैं कैसे sh sh मेरे कस्टम कार्यान्वयन में प्लग होगा।

मुझे इसे कैसे पूरा करना चाहिए? http://www.scalatest.org/user_guide/tagging_your_tests

जोड़ना और आदेश पंक्ति पैरामीटर के साथ टैग परीक्षण को हटाने: http://www.scalatest.org/user_guide/using_the_runner#specifyingTagsToIncludeAndExclude

उदाहरण कोड टैग का उपयोग कैसे करें पर

प्रलेखन:

उत्तर

8

आप टैग इस लक्ष्य को हासिल करने के लिए उपयोग कर सकते हैं:

import org.scalatest.Tag 

object ServerIsAvailable extends Tag("biz.neumann.ServerIsAvailable") 

"Something" should "do something" taggedAs(ServerIsAvailable) in { 
    // your test here 
} 

परीक्षण चलाना

परीक्षण चलाना एक बिट मुश्किल है। यह केवल परीक्षण के लिए काम करता है केवल और testQuickपरीक्षण। उदाहरण testOnly में testOnly के लिए कम है *

sbt "testOnly -- -l biz.neumann.ServerAvailable" 
+0

मुझे यह भी मिला, लेकिन दस्तावेज़ केवल यह संदर्भ देता है कि कमांड लाइन पर इसे कैसे किया जाए। हालांकि, मैं जेनकींस पर 'एसबीटी टेस्ट' चला रहा हूं, और जब सर्वर उपलब्ध नहीं है तो मैं प्रोग्राम को प्रोग्रामिक रूप से छोड़ना चाहता हूं। – rabejens

+0

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

+0

ओह, अब मैं समझता हूं।वर्तमान में मैं परीक्षण सर्वर को प्रोग्रामेटिक रूप से शुरू और बंद कर देता हूं (यह वहां एसएसएच द्वारा परीक्षण सर्वर पर डॉकर के साथ किया जाता है), लेकिन इसके लिए जेनकींस का उपयोग क्लीनर समाधान है। – rabejens

11

मैं cancel का उपयोग करेंगे:

"Something" should "do something" in { 
    if(!serverIsAvailable) { 
    cancel 
    } 

    // my test code 
} 

या यह assume का उपयोग करके आगे भी आसान बनाने:

"Something" should "do something" in { 
    assume(serverIsAvailable) 

    // my test code 
} 
+1

इस के लिए भी माना जाता है: 'मान लें (server.is उपलब्ध)' –

+0

अच्छा, मैंने एक पूर्ण उदाहरण दिखाने के लिए समाधान समायोजित किया है। –

+0

बिना होना चाहिए! मैंने इसे संपादित करने की कोशिश की लेकिन हां संपादन कम से कम 6 वर्ण होने चाहिए। –

2

एक कॉन के आधार पर एक परीक्षण छोड़ने के लिए यहां कुछ चाल है डिशन:

object WhenServerAvailable extends Tag(if (serverIsAvailable) "" else classOf[Ignore].getName) 

"Something" should "do something" taggedAs WhenServerAvailable in { ... } 
संबंधित मुद्दे