2012-05-15 14 views
8

से UIAutomationTest चला नहीं सकता है मेरे पास एक आईओएस एप्लिकेशन है, और मैं इसे निरंतर एकीकरण में रखना चाहता हूं। मैं जिस रणनीति का उपयोग कर रहा हूं वह कमांड लाइन से परीक्षण चलाने की कोशिश कर रहा है।कमांड लाइन

मैं निम्नलिखित स्क्रिप्ट का उपयोग कर यह करने के लिए कोशिश कर रहा हूँ:

TRACETEMPLATE="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Instruments/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate" 
instruments -t $TRACETEMPLATE build/Release-iphonesimulator/MyApp.app -e UIACSCRIPT "UnitTests/SomeTest.js" 

SomeTest.js कि मैं Xcode अंदर इंस्ट्रुमेंटेशन में चला सकते हैं एक सरल जावास्क्रिप्ट फ़ाइल है और यह काम करता है। मैं अपना आवेदन बनाकर:

xcodebuild -alltargets -sdk iphonesimulator5.1 

और यह MyApp.app उत्पन्न करता है। मैं तो बस ठीक सिम्युलेटर में Xcode से आवेदन चला सकते हैं, हालांकि, जब मैं उपकरणों से चलाने का प्रयास, मैं एक बॉक्स कह वहाँ एक अज्ञात त्रुटि है कि हो और कमांड लाइन में यह प्रिंट:

2012-05-15 15:32:59.928 instruments[17548:1d03] Recording cancelled : At least one target failed to launch; aborting run 
Instruments Trace Error : Failed to start trace. 

क्या कोई मुझे क्या हो रहा है इसके बारे में कोई मदद/सुझाव दे सकता है और मैं इसे कैसे ठीक कर सकता हूं?

इसके अलावा, यह हमेशा आईपैड सिम्युलेटर खोलता है? क्या मैं इसे बना सकता हूं कि यह कोई भी सिम्युलेटर खोलता है जिसे मैं चाहता हूं?

+0

मेरे पास बिल्कुल वही समस्या है और इसे हल भी नहीं कर सकता :( – Roger

+0

मुझे अब तक कोई समाधान नहीं मिला। मैं एप्पल के मंचों पर यह देखने के लिए कहूंगा कि वे कुछ के साथ आते हैं या नहीं। अगर मुझे लगता है कुछ बाहर, मैं आपको बता दूंगा। – Rafael

उत्तर

6

मुझे यह वही त्रुटि मिल रही थी और लगभग इसे हल करने की कोशिश कर मेरे बालों को खींच लिया। त्रुटि संदेश पूरी तरह से अनुपयोगी हैं।

मेरे लिए समस्या क्या हो रही थी .app फ़ाइल जो मैं इंगित कर रहा था। एक बार मुझे "सही" .app फ़ाइल मिली जो 5.1 सिम्युलेटर फ़ोल्डर में गहराई से दफनाया गया था, मैं अंततः एक्सकोड 4.3 के साथ कमांड लाइन से UIAutomation परीक्षण चला सकता था।

.app कि मेरे लिए काम किया करने के लिए पथ:

instruments -t /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Instruments/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate ~/Library/Application\ Support/iPhone\ Simulator/5.1/Applications/{string-of-numbers-and-letters}/MyApp.app/ -e UIASCRIPT /Path/To/TestFile.js 

:

~/Library/Application\ Support/iPhone\ Simulator/5.1/Applications/{string-of-numbers-and-letters}/MyApp.app/ 

यहाँ पूर्ण आदेश मैं Xcode 4.3 के साथ कमांड लाइन से UIAutomation परीक्षण चलाने के लिए उपयोग कर रहा हूँ है उम्मीद है कि यह किसी और की मदद करता है, क्योंकि इसके लिए दस्तावेज बेहद कम है।

अद्यतन

नोट Xcode 4.5.2 के रूप में, स्वचालन टेम्पलेट स्थान अपने मूल जवाब पर कि से बदल गया है कि:

/Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate 
+0

धन्यवाद, यह काम करता है! मुझे नहीं पता कि मैं इसे सीआई सर्वर में डाल सकता हूं (मुझे नहीं लगता कि मेरा मेकफ़ाइल ऐप अपडेट करेगा, मैं बाद में परीक्षण करूंगा और देखें कि यह काम करता है ....) – Rafael

+0

हे @ स्पॉटडॉग 13, मुझे यह त्रुटि मिल रही है जब मैं इसे चलाता हूं - 'विफल: लक्ष्य एप्लिकेशन की मृत्यु हो गई है इंस्ट्रूमेंट्स ट्रेस पूर्ण' – Legolas

+1

@ लेगोलास, जो मुझे संस्करण की तरह लगता है जिस ऐप को आप इंगित कर रहे हैं वह आपके ऐप का सबसे हालिया संस्करण नहीं है। क्या आपने सुनिश्चित किया है कि ~/लाइब्रेरी/एप्लिकेशन \ सपोर्ट/आईफोन \ सिम्युलेटर/5.1/एप्लीकेशन/{स्ट्रिंग पर एकाधिक फ़ोल्डर्स नहीं हैं -फ-संख्या-और-अक्षरों} ?? यदि उपर्युक्त पथ के संदर्भ में एक से अधिक "{string-of-numbers-and-letters}" फ़ोल्डर है, तो दूसरा प्रयास करें और देखें कि यह काम करता है या नहीं। मेरा अनुमान है कि आप अपने ऐप का पुराना संस्करण चलाने की कोशिश कर रहे हैं। यदि इससे सहायता मिलती है तो मुझे बताएं। – DiscDev

0

माफ करना, मेरी अंग्रेजी बहुत खराब है। इस स्क्रिप्ट को टीमसिटी से चलाने का सबसे आसान तरीका है? प्रत्येक असेंबली - संख्याएं और अक्षर अलग हैं। नहीं सबसे आसान तरीका:

  1. स्वच्छ सिम्युलेटर पहले विधानसभा के लिए
  2. कार्यक्रम के साथ फ़ोल्डर मिल जाए, और यह इन संख्याओं और अक्षरों, चर में लिखा होता है।
  3. यह चर, जैसे स्क्रिप्ट लिखना।

शायद इन नंबरों से लेने के लिए एक आसान तरीका है?

1

यूआईयूटोमेशन के कमांड लाइन आमंत्रण के पथ पिछले कुछ वर्षों में थोड़ा बदल गए हैं।मैंने कुछ बैश खोल स्क्रिप्ट लिखी हैं जो एक साथ काम करती हैं जो आपके यूआईयूयूटोमेशन परीक्षण फ़ाइल को इस तरह से लॉन्च कर सकती है जो एक्सकोड 4.4.1 के साथ काम करती है।

इस सार देखें:

instruments -t $INSTRUMENTS_TEMPLATE $APP_PATH -e UIASCRIPT $SCRIPT_PATH -e UIARESULTSPATH $RESULTS_PATH

मेरे स्क्रिप्ट की जरूरत चर प्रतिस्थापन दिखाने: https://gist.github.com/3605692#comments

संक्षेप में, कुंजी आदेश से किया जा रहा समाप्त होता है। दूसरा लाभ यह है कि आईओएस सिम्युलेटर ऐप्स अक्सर अपने पथ के हिस्से के रूप में GUID बदल रहे हैं। मेरी स्क्रिप्ट उन्हें पाई जाएगी, इसलिए आपको अपने निर्माण/स्क्रिप्ट/कमांड लाइन आमंत्रण में अस्थायी GUID को हार्ड कोड नहीं करना है।

+1

शैल स्क्रिप्ट के लिए धन्यवाद! – kovpas

6

Automation.tracetemplate का सही स्थान, Xcode 4.5.2 के रूप में, विन्यास बिल्ड रिलीज से डिबग होना चाहिए /Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate

+0

मेरी इच्छा है कि मैं आपको 10 वोट दे सकता हूं। वे इसे क्यों बदलते रहते हैं? –

0

है। मेरे मामले में त्रुटि का यही कारण था। आप 'बिल्ड संपादित करें' में बिल्ड कॉन्फ़िगरेशन और प्रोफ़ाइल टैब चुनकर बदल सकते हैं। सत्यापित करें कि बिल्ड टैब भी डीबग मोड में है।

0

मैंने ps कमांड को यह देखने के लिए किया कि कौन सी प्रक्रियाएं चल रही हैं। मैंने पाया कि उपकरण अभी भी चल रहे थे। मैंने तब killall instruments किया और उसने यंत्र प्रक्रिया को मार डाला। मैंने फिर अपने यंत्र कमांड किया और इसके बाद यह सही काम किया।