2012-02-21 11 views
11

मैं अपने कोड (AppDelegate.m में उदाहरण के लिए) है कि यूनिट टेस्ट मैचों के लिए संकलित नहीं किया जाना चाहिए में वर्गों है, जैसेXcode: सशर्त डीबग/टेस्ट कोड के लिए पूर्वप्रक्रमक मैक्रो

#ifndef CONFIGURATION_TESTS 
// Code that should not be compiled in the Unit Tests 
#endif 

लक्ष्य स्थापित कर रहे हैं जब आप एक नई परियोजना बनाते समय 'यूनिट टेस्ट जोड़ें' चुनते हैं तो एक्सकोड द्वारा। प्रोजेक्ट फ़ाइल में, मैंने MyAppTests बिल्ट-टार्गेट के लिए प्रीप्रोसेसर मैक्रोज़ में फ्लैग CONFIGURATION_TESTS को जोड़ा है लेकिन MyApp लक्ष्य के लिए नहीं।

यह मुझे मिली कई पोस्टों में सुझाया गया तरीका था।

लेकिन यह काम नहीं करता है, क्योंकि (मुझे लगता है) MyAppTests लक्ष्य पर निर्भरता के रूप में MyApp लक्ष्य है और क्योंकि AppDelegate.m MyApp लक्ष्य में जोड़ा गया है, यह MyApp बिल्ड सेटिंग्स के साथ संकलित हो जाता है और इसलिए, CONFIGURATION_TESTS परिभाषित नहीं है।

इकाई परीक्षण में फ़ाइलों मैक्रो परिभाषित किया और उम्मीद के रूप में व्यवहार किया जाता है (क्योंकि परीक्षण फ़ाइलों को केवल MyAppTests द्वारा निर्माण कर रहे हैं को लक्षित?)

किसी को भी ऐसा करने के तरीके पता है, मैंने सोचा यह एक आम होगा समस्या ...

+1

पर एक विस्तृत चरण-दर-चरण स्पष्टीकरण से अधिक लिखा है मैं एक ही मुद्दा है और यह समझ नहीं – shawnwall

+0

"यह काम नहीं करता है: 1) CONFIGURATION_TEST हमेशा सच है? 2) कभी सच नहीं? 3) यूनिट टेस्ट में काम करता है लेकिन ऐप में नहीं? 4) ऐप में काम करता है लेकिन इकाई परीक्षण नहीं करता है? (पूछताछ दिमाग जानना चाहते हैं ...) – geowar

उत्तर

11

की जरूरत है: (कुंजी एक नए निर्माण विन्यास बनाने के लिए है इस विन्यास फोन की सुविधा देता है परीक्षण)

तो फिर तुम विन्यास डीबग के लिए तदनुसार पूर्वप्रक्रमक मैक्रो के मूल्यों कॉन्फ़िगर करते हैं, तो आप और CONFIGURATION_TESTS = 0 सेट और विन्यास परीक्षण के लिए, आप CONFIGURATION_TESTS सेट रिलीज = 1

अंत में आप यूनिट टेस्ट मैचों की स्कीमा निर्माण के रूप में परीक्षणों का प्रयोग कर संपादित विन्यास। यही है:

पी मैं अपने blog

+0

गूंगा सवाल: आपको CONFIGURATION_TESTS = 0 क्यों चाहिए गैर परीक्षण निर्माण विन्यास? मैंने इस भाग को छोड़ दिया और सब ठीक काम करने लग रहा था। –

3

आप "CONFIGURATION_TESTS = 1", न सिर्फ "CONFIGURATION_TESTS" मैं अंत में इस सवाल का जवाब अपने आप मिल गया है स्थापित करने के लिए

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