2011-12-13 4 views
9

मेरे पास org.scalatest का उपयोग करके कुछ परीक्षण के साथ एक स्कैला एप्लिकेशन है। परीक्षण डेटाबेस को प्रबंधित करने के लिए, इन परीक्षणों को कुछ वैश्विक सेटअप (और टियरडाउन) की आवश्यकता होती है।org.scalatest: वैश्विक सेटअप (पहलेAllSuites की तरह?)

कृपया मुझे नहीं बताएं कि मेरे परीक्षण डेटाबेस को हिट नहीं करना चाहिए और मुझे इसे जावा-डीएओ-स्टब-डब्ल्यूटीएफ-ओवरकिल-वे ™ :-) करना चाहिए।

मैं एसबीटी है, जो पहले और परीक्षण के बाद कोड निष्पादित करने के लिए एक तरीका प्रदान करता का उपयोग कर परीक्षण चल रहा हूँ:

testOptions in Test += Tests.Setup(() => println("Setup")) 

    testOptions in Test += Tests.Cleanup(() => println("Cleanup")) 

दुर्भाग्य से मैं वहाँ प्रश्न में कक्षाओं का उपयोग नहीं कर सकते हैं। अनजाने में, build.sbt में उन्हें आयात करना या तो काम नहीं करता है।

कोई भी विचार?

+0

मेरे पास एक बहुत ही समान उद्देश्य था, और इसे एक समाधान मिला। इस प्रश्न को जांचें: http://stackoverflow.com/questions/27272811/how-to-cut-a-long-scalatest-spec-to-pieces/27275814 परीक्षण कक्षा के रूप में प्रारंभिक चरण को भी रखना चाहता था। – akauppi

उत्तर

4

आप अपनी आवश्यकताओं के आधार पर BeforeAndAfterAll या BeforeAndAfter लक्षणों का उपयोग कर सकते हैं।

BeforeAndAfterAll:

विशेषता सुइट्स की जरूरत है कि से पहले और सूट को क्रियान्वित करने के बाद लागू तरीकों में मिलाया जा सकता है। यह विशेषता रन से पहले और/या सभी सूट और नेस्टेड सूट के बाद कोड को निष्पादित करने की अनुमति देता है।

तो इस उदाहरण में, आप एक मास्टर सूइट को परिभाषित करेंगे जिसमें अन्य सभी सूट/टेस्ट शामिल हैं, जो इस विशेषता को बढ़ाते हैं।

BeforeAndAfter:

विशेषता सुइट्स की जरूरत है कि कोड प्रत्येक परीक्षा चलाने के बाद से पहले और निष्पादित में मिलाया जा सकता है। यह विशेषता में परीक्षण की शैली की सुविधा प्रदान करती है जो कि उदाहरण चर में आयोजित उत्परिवर्तनीय स्थिरता वस्तुओं को प्रतिस्थापित किया गया है या प्रत्येक परीक्षण या सूट से पहले पुन: प्रारंभ किया गया है।

+3

मास्टरसुइट को परिभाषित करने का अर्थ यह होगा कि मेरे सभी परीक्षणों को एक फ़ाइल में परिभाषित करने की आवश्यकता है, है ना? अभी के लिए, मैंने सभी डेटाबेस-निर्भर परीक्षण को एक सूट में अलग कर दिया है और पहले और बाद में उपयोग करें। इसका लाभ भी है कि मैं इन धीमी परीक्षाओं को आसानी से छोड़ सकता हूं। –

+3

सालों बाद, लेकिन प्रश्न ढूंढने वाले किसी भी व्यक्ति के लिए अभी भी प्रासंगिक: आपको एक ही फाइल में सभी परीक्षणों को परिभाषित करने की आवश्यकता नहीं है, स्कैलाटेस्ट में रचनात्मक कार्यक्षमता है जहां आप 'क्लास मास्टर सूइट का उपयोग कर सकते हैं सूट (नया वनस्पेक, नया टूस्पेक)' ताकि रचित सुइट्स को केवल कक्षापथ पर होना आवश्यक है ('पहले और बाद में' स्कालाडोक का इसका एक उदाहरण है, इसलिए इसे याद करना आसान है)। चूंकि 2.0 स्कैलाटेस्ट में '@ DoNotDiscover' एनोटेशन है, इसलिए आप सभी रचनाकृत सूट, केवल मास्टर को चलाने से एसबीटी (या जो भी सहायक धावक) को रोक सकते हैं। – ches

+0

असल में लेखक इसे यहां अच्छी तरह से कवर करते हैं: http://stackoverflow.com/questions/15423337/doing-something-before-or-after-all-scalatest-tests – ches

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