2015-11-11 15 views
9

क्या पृष्ठभूमि में एप्लिकेशन भेजने का कोई तरीका है? इसी प्रकार आप XCUIApplication.terminate() पर कॉल कैसे कर सकते हैं, मेरे पास applicationDidBecomeActive(_:) पर परीक्षण करने के लिए कुछ UI तत्व हैं। क्या किसी को पता है कि यह सब संभव है?पृष्ठभूमि में प्रोग्राम को एक ऐप भेजना

उत्तर

7

मैं XCUIDevice की जांच करने की सिफारिश करता हूं। यहाँ आप कैसे घर बटन दबाएं और फिर आवेदन

func testExample() { 

    // Has a nav bar. 
    XCTAssert(XCUIApplication().navigationBars.element.exists) 

    XCUIDevice().press(XCUIDeviceButton.home) 
    // Before Swift 3: XCUIDevice().pressButton(XCUIDeviceButton.Home) 
    XCUIApplication().launch() 

    // Navigationbar still there on second launch. 
    XCTAssert(XCUIApplication().navigationBars.element.exists) 
} 
+0

आईओएस सिम्युलेटर (9.3) और एक्सकोड 7.3 के साथ अच्छी तरह से काम करता है। धन्यवाद! – Vish

+6

['XCUIApplication.launch() '] के एपीआई दस्तावेज के अनुसार (http://masilotti.com /xctest-documentation/Classes/XCUIApplication.html#//api/name/launch) (एक्सकोड 7.3.1), यह एप्लिकेशन को समाप्त कर देता है यदि यह पहले से चल रहा है। मुझे लगता है कि यह इस मामले के लिए उपयुक्त नहीं है - एप्लिकेशन को भेजें पृष्ठभूमि और फिर इसे फिर से लाओ। –

4

मैंने सफलतापूर्वक UIApplication.sharedApplication().performSelector("suspend") सफलतापूर्वक प्रयास किया।

dispatch_after(2, dispatch_get_main_queue(), {  
    // suspend the app after two seconds 
    UIApplication.sharedApplication().performSelector("suspend") 
}) 
+0

मैं इसे एक्सकोड स्वचालित यूआई टेस्ट के लिए काम करने के लिए प्राप्त करने की कोशिश कर रहा हूं, क्या यह काम करना चाहिए? या यह उत्तर किसी अन्य प्रकार के परीक्षण के लिए उपयुक्त है? – Liam

+0

@tilo यह मेरे लिए काम नहीं करता है (एक्सकोड 7.3.1)। dispatch_after (2, dispatch_get_main_queue(), { // दो सेकंड UIApplication.sharedApplication के बाद एप्लिकेशन को निलंबित()। PerformSelector (#selector (NSURLSessionTask.suspend)) }) यह बस को निलंबित में एप्लिकेशन डाल करता है पृष्ठभूमि की स्थिति के बजाय राज्य? –

+0

@Liam क्या आपको UITest में ऐसा करने का तरीका मिला है? मुझे अभी भी यह पता चल रहा है, लेकिन कोई सुराग नहीं है :( – Confused

0

पुन: लॉन्च Xcode 9.0 में हो सकता है, एप्पल XCUIApplication.activate() की शुरुआत की। activate() यदि आवश्यक हो तो एप्लिकेशन लॉन्च करेगा, लेकिन अगर यह पहले से चल रहा है तो इसे समाप्त नहीं करेगा। इस प्रकार:

func testExample() { 
    // Background the app 
    XCUIDevice().press(.home) 
    // Reactivate the app 
    XCUIApplication().launch() 
} 
संबंधित मुद्दे