2013-04-01 23 views
13

को देखते हुए निम्नलिखित टेस्ट स्वीट में चलाएँ ScalaTest परीक्षण:समानांतर

class ParallelizeMe extends FunSuite with BeforeAndAfterAll { 

    override def beforeAll() = println("before")    
    override def afterAll() = println("after")    

    test("test 1") {           
    println("1a") 
    Thread.sleep(3000)          
    println("1b")           
    } 

    test("test 2") {           
    println("2a") 
    Thread.sleep(1000)          
    println("2b") 
    } 

} 

मैं कैसे समानांतर में (एसबीटी) के माध्यम से परीक्षण चला सकते हैं?

before 
1a 
2a 
2b 
1b 
after 

उत्तर

18

उपयोग ParallelTestExecution और Runner करने के लिए एक -P कमांड लाइन तर्क उन्हें समानांतर में चलाने बनाने के लिए: आदर्श रूप में, मैं निष्पादन के आदेश stdout पर निम्नलिखित का उत्पादन करना चाहते हैं

import org.scalatest.{ParallelTestExecution, BeforeAndAfterAll, FunSuite} 
class ParallelizableSpec extends FunSuite with BeforeAndAfterAll with ParallelTestExecution { 
    ... 
} 

ध्यान दें कि -पी आवश्यक है। स्रोत से:

आप कमांड लाइन पर -P शामिल करते हैं, Runner एक DistributorSuite रों को आप -s साथ निर्दिष्ट पारित करेंगे। Runner को किसी भी Suite को Distributor की put विधि समानांतर में निष्पादित करने के लिए थ्रेड पूल ऊपर सेट करेगा।

यह भी अलगाव में परीक्षण चला जाएगा, ताकि before और after प्रत्येक सूत्र में चलाया जाएगा। ParallelTestExecution और Runner के लिए दस्तावेज़ों में और देखें।

एसबीटी में, ध्वज का उपयोग करने के build.sbt में जोड़ना:

testOptions in Test += Tests.Argument("-P") 
+3

धन्यवाद है कि मैं के लिए क्या देख रहा था। काश मैं पहले से पहले और बाद में सभी को केवल एक बार चला सकता है, लेकिन यह काफी करीब है। संदर्भ के लिए, मैंने इसे अपने * build.sbt * में जोड़ा: 'टेस्ट + टेस्ट ऑप्शन टेस्ट + = टेस्ट। ऑर्ग्यूमेंट (" - पी ")' – earldouglas

+0

बहुत उपयोगी, धन्यवाद - उत्तर में कहा गया। –

+0

कोई विचार थ्रेड की संख्या बदलने के लिए '-c' विकल्प का उपयोग कैसे करें? – earldouglas