2009-08-23 8 views
5

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

मैं एक नई परियोजना में कुछ नया कोड लिख रहा हूं जो बन जाएगा (भाग की) एक छोटी पुस्तकालय। मैं इकाई को भी परीक्षण करना चाहता हूं। मैं एक्सकोड को कैसे समझाऊं कि मैं एक (साझा) लाइब्रेरी बना रहा हूं, लेकिन मैं इसे एक ऐसे परीक्षण प्रोग्राम में भी उपयोग करना चाहता हूं, जो अलग-अलग स्रोत से संकलित है जो साझा लाइब्रेरी में नहीं होगा?

स्रोत कोड:

  • atom.c
  • atom.h
  • परीक्षण atom.c

उत्पादित फ़ाइलें:

  • libatom.dylib
  • परीक्षण-परमाणु

मुझे लाइब्रेरी में संकलित atom.c और atom.h मिला है। मुझे यकीन नहीं है कि चीजें व्यवस्थित कैसे करें ताकि मैं लाइब्रेरी से लिंक करने के लिए test-atom भी बना सकूं। मुझे लगता है कि जब मुझे यह हल हो गया है, परीक्षण समर्थन कोड के लिए लाइब्रेरी जोड़ना है कि test-atom.c अपेक्षाकृत सीधे आगे होगा - भले ही यह अभी तक एक्सकोड नियंत्रण में नहीं है।

Fwiw, मैं मुख्य रूप से सी में नहीं बल्कि उद्देश्य सी से काम

उत्तर

4

आपको अपनी परियोजना में दो लक्ष्यों की आवश्यकता है; एक्सकोड में एक लक्ष्य उत्पाद बनाता है जो एक लाइब्रेरी, निष्पादन योग्य या कुछ अन्य आउटपुट है।

इस प्रकार आप libatom.dylib, जो मैं आप पहले से ही सेट कर लेते हैं संदेह निर्माण करने के लिए एक लक्ष्य होगा, और आप अपने पुस्तकालय का परीक्षण करने को चलाने के लिए एक और आदेश-पंक्ति निष्पादन योग्य लक्ष्य test-atom निष्पादन योग्य उत्पादन करने के लिए।

एक बार जब आप test-atom लक्ष्य जोड़ लेते हैं तो test-atom.c पर जानकारी प्राप्त करना चाहिए और libatom.dylib लक्ष्य से सदस्यता निकालने के लिए, और अपने नए test-atom लक्ष्य के एक सदस्य के रूप में जोड़ें। फ़ाइल की लक्षित सदस्यता यह निर्धारित करती है कि कोई लक्ष्य बनाने से उस फ़ाइल को संकलित/प्रतिलिपि/लिंक करने का प्रयास किया जाएगा। (क्या लक्ष्य फ़ाइल के साथ क्या करता है निर्माण के चरण में यह जब यह एक सदस्य बना दिया है पर जुड़ जाता है पर निर्भर करता है।)

आप भी अपने उत्पाद समूह में libatom.dylib प्रवेश पर जानकारी प्राप्त करना चाहिए, और बनाने कि के एक सदस्य test-atom लक्ष्य भी। इससे libatom.dylib के विरुद्ध लिंक करने के लिए निष्पादन योग्य होगा।

अंत में, test-atom लक्ष्य (नहीं उत्पाद) पर जानकारी प्राप्त करें और सामान्य टैब में, libatom.dylib लक्ष्य पर एक निर्भरता जोड़ें। यह सुनिश्चित करेगा कि test-atom लक्ष्य का निर्माण हमेशा पहले libatom.dylib लक्ष्य का निर्माण करेगा।

2

संपादित करें: Automated Unit Testing with Xcode 3 and Objective-C (लेख मैं मूल रूप से नीचे के रूप में एक टिप्पणी में की ओर इशारा किया, से जुड़ा हुआ का नवीनतम संस्करण) देखें। यह भी देखें What is the best way to unit test Objective-C code? जबकि आप स्पष्ट रूप से ओबीजे-सी का उपयोग नहीं कर रहे हैं, नए लक्ष्य स्थापित करने की मूल बातें सी कोड के लिए समान होंगी, और ओसीयूनीट विशिष्ट सामग्री आईडीई में इकाई परीक्षण कैसे काम करती है इसका बहुत प्रतिनिधि है।

+4

कृपया लोगों को "ओसीयूनीट के साथ अपना कोड चलाने का परीक्षण" करने के लिए इंगित न करें - यह अप्रचलित है, और इसे प्रकाशित होने के कुछ महीने बाद पूरी तरह से पुराना हो गया है। एक बात के लिए, यह लोगों को ओसीयूनीट डाउनलोड करने के लिए कहता है, लेकिन ओक्यूनीट को डब्ल्यूडब्ल्यूडीसी 2005 के बाद एक्सकोड के साथ शामिल किया गया है जब एक्सकोड 2.1 जारी किया गया था। कृपया लोगों को "एक्सकोड 3 और उद्देश्य-सी" के साथ स्वचालित यूनिट परीक्षण "http://developer.apple.com/mac/articles/tools/unittestingwithxcode3.html पर इंगित करें। –

+0

नए लेख को इंगित करने के लिए धन्यवाद! –

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