2013-03-06 6 views
6

मेरी आईओएस परियोजना में पांच योजनाएं हैं: स्थानीय विकास, एकीकरण, क्यूए, डेमो, और उत्पादन। प्रत्येक योजना नेटवर्क मतदान आवृत्ति, एपीआई एंडपॉइंट्स, एनालिटिक्स, आदि जैसे चीजों को नियंत्रित करने के लिए एक अलग विन्यास का उपयोग करती है।एक्सकोड/आईओएस: यूनिट टेस्ट, योजनाएं और विन्यास

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

हमारे आवेदन के Info.plist फ़ाइल आवेदन चर ऐसे ${SOME_ENDPOINT_URL} के रूप में इसी उपयोगकर्ता निर्धारित सेटिंग्स बिल्ड में आकर्षित करने के लिए उपयोग करता है।

चर को पुनः प्राप्त करने के लिए, मैं निम्नलिखित की तरह कुछ कार्य करें:

[[[NSBundle mainBundle] infoDictionary] valueForKey:@"Some Endpoint URL"] 

कि उपयोगकर्ता निर्धारित सेटिंग बिल्ड के अनुरूप होता है, इस तरह:

"Some Endpoint URL" = ${SOME_ENDPOINT_URL} 

मैं अब में कैसे देख रहा हूँ इकाई और तर्क परीक्षण करने के लिए उचित रूप से परियोजना को कॉन्फ़िगर करने के लिए।

यह निर्धारित करने के लिए परीक्षणों का निर्माण करने के लिए कि वातावरण सही तरीके से कॉन्फ़िगर किए गए हैं या नहीं, मुझे यकीन नहीं है कि सबसे अच्छा अभ्यास क्या है।

  • क्या प्रत्येक वातावरण के लिए पांच अतिरिक्त टेस्ट-विशिष्ट लक्ष्य तैयार करना सही है?
  • या क्या प्रत्येक योजना के लिए परीक्षण घटक के लिए "कार्रवाई कार्रवाई के तर्क" सेटिंग को ओवरराइड करना बेहतर है, और यह निर्दिष्ट करने के लिए कि हम कौन सी योजना देख रहे हैं, एक तर्क की तरह कुछ प्रदान करना बेहतर है?
  • क्या कई वातावरण के साथ आईओएस परियोजनाओं के लिए इकाई और तर्क परीक्षण को कॉन्फ़िगर करने के लिए कोई मौजूदा संदर्भ हैं? इस परियोजना की जटिलता अधिकांश दस्तावेज के दायरे से अधिक प्रतीत होती है।
+0

एप्पल पूरे लक्ष्य/योजनाओं व्यवस्था करने के लिए गैर-पीछे की ओर संगत परिवर्तन करने रहता है - मुझे लगता है कि कारण आप दस्तावेज़ों को ढूंढने में नहीं कर रहे हैं कि एप्पल का इरादा रखता है/इन आगे जाकर अधिक बनाने के लिए उम्मीद है, और वे जो फ्लाक प्राप्त करेंगे उन्हें चकमा देने की उम्मीद कर रहे हैं। ऐप्पल में कोई भी लक्ष्य विशेष रूप से नफरत करता है, इसलिए मैं व्यक्तिगत रूप से "उपयोग तर्क" दृष्टिकोण के साथ जाऊंगा - लक्ष्य नफरत प्राप्त करने वाले हैं (फिर से :() – Adam

+3

इतने सारे अलग-अलग लक्ष्य होने की बजाय, केवल एक लक्ष्य क्यों नहीं है , और पांच विन्यास? डीबग और रिलीज के बजाए आपके पास लोकलडेव, इंटीजी, क्यूए, डेमो, प्रोड होगा। फिर आप एक ही लक्ष्य बनाने वाली पांच योजनाएं बना सकते हैं, लेकिन एक अलग कॉन्फ़िगरेशन के साथ। –

+0

@JacobLukas क्या आप अच्छे से जानते हैं आप जो वर्णन करते हैं उसके लिए ट्यूटोरियल। मैंने हमेशा योजनाओं से बचते हैं, लेकिन लगता है कि वे वास्तव में उपयोगी हो सकते हैं। – DogCoffee

उत्तर

1

निम्नलिखित हैं जो मैं करता हूं।

Info.plist

  • एक मास्टर Info.plist फ़ाइल
  • बनाएं प्रत्येक योजना के लिए एक रन स्क्रिप्ट (शैल स्क्रिप्ट) लिखें मास्टर में सेटिंग में बदलाव करने की जानकारी से एक वातावरण-विशिष्ट Info.plist उत्पन्न करने के लिए .plist (प्रयोग PlistBuddy -c)
  • (उपरोक्त, "संकलित सूत्रों का कहना है")

ज फ़ाइल के चरण का निर्माण करने के लिए रन स्क्रिप्ट जोड़ें

+०१२३५१६४१०
  • एक .h फ़ाइल में कॉन्फ़िगरेशन सेटिंग्स को परिभाषित करें (उदा। config.h) अपने कोड में

    #if defined (CONFIG_FILE) 
    #import CONFIG_FILE 
    #endif 
    
  • आयात config.h

  • उपयोग प्रत्येक योजना के लिए पहले से प्रोसेसर मैक्रो लक्ष्य ज फ़ाइल का चयन करने के लिए।

    -DCONFIG_FILE=local-env-config.h 
    
संबंधित मुद्दे