2012-04-24 10 views
8

के भीतर से अपने परीक्षणों को कॉल करते समय स्कैलाटेस्ट परीक्षण को छोड़कर मैं एक ऐसा टेस्ट लिखना चाहता हूं जो दूरस्थ सर्वर को कॉल करता है और प्रतिक्रिया को मान्य करता है क्योंकि सर्वर बदल सकता है (यह मेरे नियंत्रण में नहीं है)।एसबीटी

sbt> test-only * -- -l RemoteTest 

हालांकि, जब यह कर मेरे सारे परीक्षण RemoteTest सहित चलाए जा रहे हैं: यह मैं आंकड़ा मैं give it a tag चाहते (RemoteTest) और फिर exclude it when calling the runner ऐसा करने के लिए। मैं धावक को एसबीटी के भीतर से कैसे कॉल करूं ताकि इसे बाहर रखा जा सके?

+0

हालांकि यह किसी भी तरह से आपके प्रश्न का उत्तर नहीं देता है, इस तरह की बदलती चीजों के लिए स्टब्स और [mocks] (http://scalamock.org/) का उपयोग करना अच्छा अभ्यास है। –

+0

मैं मूल रूप से करता हूं। लेकिन मैं अभी भी जानना चाहता हूं कि एपीआई मुझ पर बदलती है या नहीं। – pr1001

उत्तर

10

आप निम्नलिखित है: -

package com.test 

import org.scalatest.FlatSpec 
import org.scalatest.Tag 

object SlowTest extends Tag("com.mycompany.tags.SlowTest") 
object DbTest extends Tag("com.mycompany.tags.DbTest") 

class TestSuite extends FlatSpec { 

    "The Scala language" must "add correctly" taggedAs(SlowTest) in { 
     val sum = 1 + 1 
     assert(sum === 2) 
    } 

    it must "subtract correctly" taggedAs(SlowTest, DbTest) in { 
    val diff = 4 - 1 
    assert(diff === 3) 
    } 
} 

DbTest टैग निकालने के लिए आपको क्या करना होगा: -

test-only * -- -l com.mycompany.tags.DbTest 

ध्यान दें कि आप पूर्ण टैग नाम शामिल करने के लिए की आवश्यकता होगी। यदि यह अभी भी आपके लिए काम नहीं कर रहा है, तो क्या आप उस स्रोत कोड का हिस्सा साझा करना चाहते हैं जो काम नहीं कर रहा है?

+0

हा, इतना आसान! मुझे पूरी तरह से याद आया कि इसे पूरी तरह से योग्य नाम होना चाहिए। – pr1001