2010-09-02 10 views
11

मैं अपने यूनिट परीक्षणों के लिए एक्सकोड में सेनटेस्ट का उपयोग कर रहा हूं। मुझे परीक्षण करने के लिए अपने यूनिट परीक्षणों के लिए एक कमांड लाइन कार्य करना होगा। मैं इसे अपने टेस्ट क्लास (निश्चित रूप से सेनटेस्टकेस के उप-वर्ग) की प्रारंभिक विधि में कर सकता हूं।सेनटेस्टकिट: सभी परीक्षणों के बाद सफाई हो रही है?

परीक्षण किए जाने पर मैं कमांड लाइन कार्य को समाप्त करना चाहता हूं। चूंकि शुरुआती + के विपरीत नहीं है, इसलिए मैं स्टंप हो गया हूं।

क्या ऐसा करने के लिए एक सेनटेस्ट क्लास को उप-वर्ग करने का कोई तरीका है जो मैं देख रहा हूं?

उत्तर

36

+ प्रारंभ करें में अपना कमांड लाइन उपकरण न चलाएं। ऑब्जेक्टिव-सी रनटाइम द्वारा भेजा जाता है जब कक्षा को पहले किसी भी संदेश भेजा जाता है।

इसके बजाय, अपने परीक्षण की +setUp विधि में अपना कमांड लाइन टूल चलाएं। (ध्यान दें मैं वास्तव में मतलब था कि +setUp और नहीं -setUp;। बहुत सारे लोग जो वर्ग और उदाहरण विधियों के बीच अंतर पर थोड़ा फजी होने लगते हैं)

इस मामले में, एक वर्गsetUp विधि से पहले OCUnit से शुरू हो जाती है एक SenTestCase उपवर्ग में परीक्षण के किसी भी चलाए जा रहे हैं, और एक वर्गtearDown विधि एक SenTestCase उपवर्ग ar समय में सभी परीक्षणों के बाद OCUnit से शुरू हो जाती है।

तो एक विशेष SenTestCase उपवर्ग के लिए समग्र प्रवाह है:

  • प्रत्येक test विधि SomeTestCase (इसे कहते test___)
    • में शुरू करने के लिए SomeTestCase
    • करने के लिए +setUp भेजने का एक नया उदाहरण बनाने SomeTestCase
    • -setUp पर भेजें
    • इसे करने के लिए -test___ भेज
    • इसे करने के लिए -tearDown भेज
    • रिहाई यह
  • भेज +tearDownSomeTestCase को

इस तरह से आप कुछ है कि में से किसी से पहले किया जाना चाहिए अगर आपके -test विधियां चलती हैं, या कुछ ऐसा जो आपके -test विधियों के चलने के बाद किया जाना चाहिए, वहां एक निश्चित बिंदु है ich आप ऐसा कर सकते हैं। (स्मृति प्रबंधन पर भरोसा करने की बजाय, जो कि वैसे ही निर्धारिती नहीं है, और यदि आप जीसी का उपयोग कर रहे हैं तो निश्चित रूप से निर्धारक नहीं हो सकते हैं।)

+2

मुझे कुछ भी नहीं मिला जो + सेटअप/+ टियरडाउन विधियों के बारे में बात करता था। ज्ञान के लिए धन्यवाद। – Mel

0

आपको Google Toolbox for Mac या इसके आगे व्युत्पन्न GHUnit पर देखना चाहिए। दोनों (मुझे लगता है) कम से कम कक्षा-स्तर सेटअप और टियरडाउन प्रदान करते हैं। यदि आप परीक्षणों के बाद सभी परीक्षण चलाए जाने से पहले एक कमांड लाइन चलाने के लिए वास्तव में एक कमांड लाइन चलाने के लिए चाहते हैं और फिर परीक्षण चलाने के बाद दूसरी कमांड लाइन (शायद पहले को मारने के लिए), मैं शेल स्क्रिप्ट बिल्ड चरण को संशोधित करता हूं जो यूनिट परीक्षण चलाता है (अंतिम चरण यूनिटटेस्ट बंडल लक्ष्य के निर्माण चरणों में)।

+4

आपको कक्षा-स्तर सेटअप और टियरडाउन रखने के लिए किसी भी अतिरिक्त ढांचे की आवश्यकता नहीं है; ये ओसीयूनीट का हिस्सा हैं। –

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