2009-06-15 19 views
17

मैं अपने आईफोन टेस्ट ऐप को आईफोन में स्वचालित रूप से परीक्षण करना चाहता हूं।आईफोन के लिए एक्सकोड टेस्ट ऑटोमेशन

  1. संकलन, लिंक और कोड iphone अनुप्रयोग (Xcodebuild)
  2. हस्ताक्षर iphone करने के लिए नव निर्मित एप्लिकेशन
  3. स्वचालित रूप से iphone में अपलोड अनुप्रयोग चलाने
  4. अपलोड: निम्न चरणों मैं करना चाहते हैं
  5. gdb सांत्वना

एप्लिकेशन बंद कर अभी से परिणाम एकत्रित करते हैं, मैं चरण 2 और 3 मैं कहाँ नहीं कर सकते के साथ समस्या है यह स्वचालित रूप से (मैं इसे "बिल्ड और डीबग" बटन के माध्यम से एक्सकोड से कर सकता हूं। हालांकि, मैन्युअल क्लिकिंग की आवश्यकता होगी)।

मैंने ऑटोमेटर पर कुछ शोध किया और यह मेरी समस्या का उत्तर नहीं देता है। एक और विकल्प जो मैं सोच रहा हूं वह है कि ऐप को आईफोन सिम्युलेटर के लिए संकलित किया गया है और इसे वहां से चलाएं, लेकिन मुझे यकीन नहीं है कि परीक्षण परिणाम वास्तविक डिवाइस की तुलना में कितना सटीक होगा।

मै मैक/आईफोन विकास के लिए नया हूं, शायद किसी के पास इसका परीक्षण करने का एक बेहतर तरीका है। कोई प्रतिक्रिया और इनपुट स्वागत है। धन्यवाद।

उत्तर

5

उपकरण जो आप शायद निर्माण और स्थापित करने के लिए उपयोग करना चाहते हैं वह एप्पलस्क्रिप्ट है। कुछ ऐसा:

tell application "Xcode" to launch 

मैं यह नहीं कह रहा हूं कि यह एक पूर्ण उत्तर है; काम करने के लिए अभी भी बहुत सी चीजें हैं। लेकिन एप्पलस्क्रिप्ट आपके मुख्य उपकरण में से एक होने जा रहा है।

+0

पॉइंटर के लिए धन्यवाद। मैं सेबस्क्रिप्ट का उपयोग कर एक्सकोड लॉन्च करने में कामयाब रहा। अभी, मुझे यह समझना होगा कि सही प्रोजेक्ट का चयन करने के लिए सिंटैक्स क्या है और "बिल्ड करें और जाएं" पर क्लिक करें। यह कुछ समय पहले होगा जब मैं कुछ भी उपयोगी के साथ बाहर आऊंगा। – chuan

+2

इसके बारे में मत सोचो "निर्माण करें और जाएं पर क्लिक करें।" आपको घटनाओं के बारे में सोचना होगा। अगर आपको अपने सिर में "क्लिक" मिलता है, तो आप अक्सर गलत सड़क पर जायेंगे। निर्माण के लिए आदेश "निर्माण" है। एक्सकोड प्रदान करता है यह देखने के लिए आप एप्पलस्क्रिप्ट संपादक के "ओपन डिक्शनरी" में बहुत समय बिताना चाहेंगे। आप 'पहले प्रोजेक्ट के रिलीज "नामक बिल्ड कॉन्फ़िगरेशन का उपयोग करके निर्माण करना चाहते हैं। 'लॉन्च' यह है कि इसे क्या चलाएगा। 'सक्रिय वास्तुकला सेट' भी महत्वपूर्ण हो सकता है। कठिन सवाल यह है कि आसानी से कंसोल आउटपुट कैसे प्राप्त करें। टर्मिनल प्रकार में निम्न कमांड: –

+1

सांत्वना उत्पादन इस तरह से किया जा सकता है चूक लिखने com.apple.Xcode PBXGDBDebuggerLogToFile हाँ चूक <मेरी gdb आउटपुट फ़ाइल के लिए पथ> लिखने com.apple.Xcode PBXGDBDebuggerLogFileName इस के साथ , मैं बिल्ड कॉल करने के लिए एक पायथन स्क्रिप्ट लिखता हूं, और परीक्षण ऐप चलाता हूं। फिर परीक्षण के बाद आउटपुट लॉग उठाओ। बीटीडब्ल्यू, एप्पलस्क्रिप्ट पॉइंटर्स के लिए फिर से धन्यवाद। मैं आज कोशिश करूँगा। – chuan

1

एक कमांड लाइन टूल "xcodebuild" है जिसे आप बिना एक्सकोड के एक्सकोड बिल्ड को लात मारने के लिए कॉल कर सकते हैं। ऐसे झंडे हैं जिनका उपयोग आप लक्ष्य निर्धारित करने के लिए कर सकते हैं और इसी तरह।

+0

धन्यवाद। xcodebuild बस बाइनरी का निर्माण करेगा और यह नए संकलित बाइनरी को आईफोन में अपलोड नहीं करेगा। अगर कोई ध्वज/विकल्प है जिसे मुझे इसे काम करने के लिए निर्दिष्ट करने की आवश्यकता है, तो मुझे इसके बारे में जानना अच्छा लगेगा। – chuan

0

से कुछ के साथ मदद मिल सकती है आप लक्ष्य है कि iphone के लिए द्विआधारी अपलोड करने के लिए एक स्क्रिप्ट चलाता है के लिए एक निर्माण चरण जोड़ने सकते हैं?

सही लक्ष्य पर क्लिक करें, Add-> नई बिल्ड चरण> नई भागो स्क्रिप्ट चरण

16

बिल्ड टिप्पणी अनुभाग समाधान ठीक से प्रदर्शन के लिए एक अच्छा तरीका प्रदान नहीं करता है। उत्तर का सारांश यहां दिया गया है।

आईफोन पर डीबग प्रक्रिया अपलोड करने और ट्रिगर करने का काम आईफोन पर डीबग प्रक्रिया को अपलोड करने और ट्रिगर करने का कार्य ऐप्पलस्क्रिप्ट के माध्यम से किया जाता है। यहां बताया गया है कि ऐप्पलस्क्रिप्ट कैसा दिखता है:

tell application "Xcode" 
    open "Users:chuan:Desktop:iphone_manual_client:iphone_manual_client.xcodeproj" 
    tell project "iphone_manual_client" 
     clean 
     build 
     (* for some reasons, debug will hang even the debug process has completed. 
      The try block is created to suppress the AppleEvent timeout error 
     *) 
     try 
      debug 
     end try 
    end tell 
    quit 
end tell 

ऐप्पलस्क्रिप्ट फ़ाइल और फ़ोल्डर विभाजक के लिए "/" के बजाय ":" स्वीकार करता है।

जीडीबी कंसोल आउटपुट को फ़ाइल में लिखने के लिए जीडीबी विकल्प सेट करके कैप्चर किया जा सकता है। यह टर्मिनल में निम्न आदेश टाइप करके किया जाता है:

defaults write com.apple.Xcode PBXGDBDebuggerLogToFile YES 
defaults write com.apple.Xcode PBXGDBDebuggerLogFileName <path to my gdb output file> 

आखिरकार, विभिन्न पीपीएल के लिए बहुत धन्यवाद जिन्होंने इस समस्या को हल करने में मदद की है।

2

बाहर UISpec http://code.google.com/p/uispec/

चेक यह एक पूर्ण स्वचालन परीक्षण ढांचे iphone के लिए विकसित किया जा रहा है।

0

xcodebuild बस बाइनरी का निर्माण करेगा और यह नए संकलित बाइनरी को आईफोन में अपलोड नहीं करेगा।

वास्तव में यह (यह हस्ताक्षर करने के बाद) अपलोड कर सकते हैं, लेकिन बहुत बुरा नहीं चला ... शायद यह एक साथ लक्ष्य से जुड़ा gdb लेकिन कैसे का उपयोग कर चलाया जा सकता है (आईपी ?, usb? Usbnet?)?

2

iphone_testify देखें, यह ओसीयूनीट और मैक के लिए Google टूलबॉक्स के साथ अच्छी तरह से काम करता है, और मुझे लगता है कि यह संभवतः यूआईएसपीईसी जैसे कुछ के लिए विस्तारित हो सकता है।

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