2013-11-14 3 views
14

मुझे "xctest" नामक एक कमांड लाइन उपकरण मिला जो स्पष्ट रूप से आपके प्रोजेक्ट में यूनिट परीक्षण चला सकता है। यह निष्पादन यहाँ रहता है:मैं एक्सकोड 5 के साथ कमांड लाइन से xctest कैसे चला सकता हूं?

/Applications/Xcode.app/Contents/Developer/usr/bin/xctest 

जब मैं अपने xctest बंडल पर इस निष्पादन योग्य चलाने का प्रयास, मैं उपयोग कर रहा हूँ:

$ ./xctest /Users/myusername/Library/Developer/Xcode/DerivedData/MyApp-abcdefghijklmnop/Build/Products/Debug/MyAppTests.xctest 

हालांकि, मैं निम्नलिखित उत्पादन प्राप्त करें:

Test Suite '(null)' started at 2013-11-14 21:16:45 +0000 
Test Suite '(null)' finished at 2013-11-14 21:16:45 +0000. 
Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.001) seconds 

जहां तक ​​मैं कह सकता हूं, xctest के लिए कोई मैन पेज नहीं है, लेकिन कमांड लाइन उपज पर बस ./xctest दर्ज करना:

Usage: xctest [--test Self | All | None | <TestCaseClassName/testMethodName>] <path of unit to be tested> 

विशेष रूप से, मैं टेस्ट क्लास में केवल एक विशेष विधि का परीक्षण करने में सक्षम होना चाहता हूं, यही कारण है कि मैं इस xctest कमांड का उपयोग करना चाहता हूं।

मैं क्या देख की तरह कमांड लाइन से सभी परीक्षण चलाने के लिए एक तरह से है कि वहाँ:

$ xcodebuild test -scheme MyApp 

यह सभी इकाई परीक्षण चलाता है और ठीक से काम करता (मैं अपने इकाई परीक्षण के परिणाम देखने के लिए, का उपयोग करते समय विपरीत xctest)। लेकिन मैं इस तरह के रूप कमांड लाइन से एक भी परीक्षा पद्धति को चलाने के लिए, सक्षम होने में दिलचस्पी रखता हूँ:

$ ./xctest --test MyAppTests/testExample /Users/myusername/Library/Developer/Xcode/DerivedData/MyApp-abcdefghijklmnop/Build/Products/Debug/MyAppTests.xctest 

उत्तर

5

क्या उपयोग संदेश -XCTest कहते हैं के बावजूद तर्क आप की जरूरत है:

xctest -XCTest MyAppTests/testExample testbundle.xctest 

काम करने के लिए xctest के प्रत्यक्ष आमंत्रण के लिए आपको DYLD_FRAMEWORK_PATH और DYLD_LIBRARY_PATH को अपनी निर्मित उत्पाद निर्देशिका में सेट करने की आवश्यकता हो सकती है। आम तौर पर आपको एक्सकोड के समान तर्क और पर्यावरण का उपयोग करने की आवश्यकता होती है, आप इसे अपने परीक्षणों में से एक में ब्रेकपॉइंट डालकर, एक्सकोड के माध्यम से चलाना, और environment के [NSProcessInfo processInfo] के मानों को प्रिंट करके देख सकते हैं।

उस नोट के साथ गड़बड़ से बचने के लिए आप केवल विशिष्ट परीक्षण चलाने के लिए एक्सकोड में योजना को संशोधित कर सकते हैं। उत्पाद> योजना> संपादित करें योजना के तहत परीक्षण कार्रवाई का चयन करें और परीक्षण बंडल का विस्तार करें। आप चलाने के लिए परीक्षणों का चयन करने के लिए चेक बॉक्स का उपयोग कर सकते हैं और xcodebuild की परीक्षण कार्रवाई तब केवल इन परीक्षणों को चलाएगी।

+1

धन्यवाद! मुझे वास्तव में DYLD_FRAMEWORK_PATH और DYLD_LIBRARY_PATH के लिए पर्यावरण चर सेट करने की आवश्यकता नहीं थी। मुझे यह सुनिश्चित करने की ज़रूरत है कि बिल्ड/उत्पाद/डीबग के बजाय बिल्ड/उत्पाद/परीक्षण में मेरे पास सही xctest बंडल स्थान था। तो मेरा पथ इस प्रकार था: ./xctest -XCTest MyTestClass/testMyTestFunction /Users/username/Library/Developer/Xcode/DerivedData/MyApp-abcdefghikjklmn/Build/Products/Testing/MyAppTests.xctest –

+0

परीक्षणों को अक्षम करने के बारे में युक्ति के लिए धन्यवाद योजना। आप एकाधिक पंक्तियों का चयन कर सकते हैं और चयन टॉगल करने के लिए स्पेसबार का उपयोग कर सकते हैं - बहुत उपयोगी! – funroll

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