iOS UI 测试失败,因为“应用程序未运行,无法获取辅助功能数据。您调用 -launch 了吗?”

Posted

技术标签:

【中文标题】iOS UI 测试失败,因为“应用程序未运行,无法获取辅助功能数据。您调用 -launch 了吗?”【英文标题】:iOS UI Tests failing because "Application is not running, unable to get Accessibility data. Did you call -launch?" 【发布时间】:2017-04-10 14:58:27 【问题描述】:

如果这是一个重复的问题,我深表歉意。我一直没能找到并且不知所措。我的测试无法通过,因为应用程序没有启动。我运行了测试并观看了模拟器,并且使用普通应用程序(用于单元测试),它会在测试运行后打开和关闭,但我的“MyAppUITests”应用程序看起来已经准备好打开并在启动时崩溃这就是我收到Application is not running, unable to get Accessibility data. Did you call -launch 消息的原因。

运行 UI 测试时的控制台

Test Case '-[FizzBuzzUITests.ViewControllerUITests 
    testTapNumberButtonIncrementsScore]' started.
    t =     0.00s     Start Test at 2017-04-10 10:44:25.544
    t =     0.00s     Set Up
    t =     0.01s     Tap "numberButton" Button
    t =     0.01s         Wait for app to idle
    t =     0.07s         Find the "numberButton" Button
    t =     0.08s             Wait for app to idle
    t =     1.13s             Find the "numberButton" Button (retry 1)
    t =     1.25s                 Wait for app to idle
    t =     2.29s             Find the "numberButton" Button (retry 2)
    t =     2.41s                 Wait for app to idle
    t =     2.48s             Assertion Failure: ViewControllerUITests.swift:25: Application is not running, unable to get Accessibility data. Did you call -launch?

启动MyAppUITests时的模拟器系统日志:(为了便于阅读,移除了组件名称和时间戳

assertiond[34190]: Submitted job with label: UIKitApplication:com.apple.test.MyAppUITests-Runner[0xc278][34190]
SpringBoard[34185]: [com.apple.test.MyAppUITests-Runner] Bootstrap complete with label: UIKitApplication:com.apple.test.MyAppUITests-Runner[0xc278][34190]
XCTRunner[34865]: assertion failed: 16E195 14E269: libxpc.dylib + 64131 [624BAF4F-2E03-34F8-ACBA-970B04637786]: 0x7d
XCTRunner[34865]: Running tests...
XCTRunner[34865]: No configuration specified in environment, checking for the most recent test configuration in TMPDIR (/Users/myuser/Library/Developer/CoreSimulator/Devices/DC33C1C6-5EBB-4156-9F1E-C1844955433D/data/Containers/Data/Application/74576325-9D3A-411C-AC5B-1658CBD46272/tmp/)
XCTRunner[34865]: XCTRunner Arguments: (
    "/Users/myuser/Library/Developer/CoreSimulator/Devices/DC33C1C6-5EBB-4156-9F1E-C1844955433D/data/Containers/Bundle/Application/B2EA026D-FB60-4164-9C69-5EDDEC53427F/MyAppUITests-Runner.app/XCTRunner"
)
XCTRunner[34865]: XCTRunner Environment: 
    "CFFIXED_USER_HOME" = "/Users/myuser/Library/Developer/CoreSimulator/Devices/DC33C1C6-5EBB-4156-9F1E-C1844955433D/data/Containers/Data/Application/74576325-9D3A-411C-AC5B-1658CBD46272";
    CLASSIC = 1;
    "CUPS_SERVER" = "/private/tmp/com.apple.launchd.JL1cDBugQn/Listeners";
    "DYLD_FALLBACK_FRAMEWORK_PATH" = "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/Frameworks";
    "DYLD_FALLBACK_LIBRARY_PATH" = "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib";
    "DYLD_ROOT_PATH" = "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk";
    "DYLD_SHARED_REGION" = avoid;
    HOME = "/Users/myuser/Library/Developer/CoreSimulator/Devices/DC33C1C6-5EBB-4156-9F1E-C1844955433D/data/Containers/Data/Application/74576325-9D3A-411C-AC5B-1658CBD46272";
    "ios_SIMULATOR_SYSLOG_SOCKET" = "/private/tmp/com.apple.CoreSimulator.SimDevice.DC33C1C6-5EBB-4156-9F1E-C1844955433D.launchd_sim/syslogsock";
    "IPHONE_SHARED_RESOURCES_DIRECTORY" = "/Users/myuser/Library/Developer/CoreSimulator/Devices/DC33C1C6-5EBB-4156-9F1E-C1844955433D/data";
    "IPHONE_SIMULATOR_CLASS" = D10;
    "IPHONE_SIMULATOR_ROOT" = "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk";
    "IPHONE_TVOUT_EXTENDED_PROPERTIES" = "/Users/myuser/Library/Developer/CoreSimulator/Devices/DC33C1C6-5EBB-4156-9F1E-C1844955433D/data/Library/Application Support/Simulator/extended_display.plist";
    PATH = "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/bin:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/bin:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/sbin:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/sbin:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/local/bin";
    "SIMULATOR_CAPABILITIES" = "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/CoreSimulator/Profiles/DeviceTypes/iPhone 7.simdevicetype/Contents/Resources/capabilities.plist";
    "SIMULATOR_DEVICE_NAME" = "iPhone 7";
    "SIMULATOR_EXTENDED_DISPLAY_PROPERTIES" = "/Users/myuser/Library/Developer/CoreSimulator/Devices/DC33C1C6-5EBB-4156-9F1E-C1844955433D/data/Library/Application Support/Simulator/extended_display.plist";
    "SIMULATOR_HID_SYSTEM_MANAGER" = "/Applications/Xcode.app/Contents/Developer/Applications/Simulator.app/Contents/Resources/Platforms/iphoneos/SimulatorHID.framework";
    "SIMULATOR_HOST_HOME" = "/Users/myuser";
    "SIMULATOR_LEGACY_ASSET_SUFFIX" = iphone;
    "SIMULATOR_LOG_ROOT" = "/Users/myuser/Library/Logs/CoreSimulator/DC33C1C6-5EBB-4156-9F1E-C1844955433D";
    "SIMULATOR_MAINSCREEN_HEIGHT" = 1334;
    "SIMULATOR_MAINSCREEN_PITCH" = "326.000000";
    "SIMULATOR_MAINSCREEN_SCALE" = "2.000000";
    "SIMULATOR_MAINSCREEN_WIDTH" = 750;
    "SIMULATOR_MEMORY_WARNINGS" = "/Users/myuser/Library/Developer/CoreSimulator/Devices/DC33C1C6-5EBB-4156-9F1E-C1844955433D/data/var/run/memory_warning_simulation";
    "SIMULATOR_MODEL_IDENTIFIER" = "iPhone9,1";
    "SIMULATOR_PLATFORM_RUNTIME_OVERLAY_ROOT" = "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/CoreSimulator/RuntimeOverlay";
    "SIMULATOR_PRODUCT_CLASS" = D10;
    "SIMULATOR_ROOT" = "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk";
    "SIMULATOR_RUNTIME_BUILD_VERSION" = 14E269;
    "SIMULATOR_RUNTIME_VERSION" = "10.3";
    "SIMULATOR_SHARED_RESOURCES_DIRECTORY" = "/Users/myuser/Library/Developer/CoreSimulator/Devices/DC33C1C6-5EBB-4156-9F1E-C1844955433D/data";
    "SIMULATOR_UDID" = "DC33C1C6-5EBB-4156-9F1E-C1844955433D";
    "SIMULATOR_VERSION_INFO" = "CoreSimulator 375.20 - Device: iPhone 7 - Runtime: iOS 10.3 (14E269) - DeviceType: iPhone 7";
    "TESTMANAGERD_SIM_SOCK" = "/private/tmp/com.apple.launchd.L8ty9mXSmp/com.apple.testmanagerd.unix-domain.socket";
    TMPDIR = "/Users/myuser/Library/Developer/CoreSimulator/Devices/DC33C1C6-5EBB-4156-9F1E-C1844955433D/data/Containers/Data/Application/74576325-9D3A-411C-AC5B-1658CBD46272/tmp";
    "XPC_FLAGS" = 0x0;
    "XPC_SERVICE_NAME" = "UIKitApplication:com.apple.test.MyAppUITests-Runner[0xc278][34190]";
    "XPC_SIMULATOR_LAUNCHD_NAME" = "com.apple.CoreSimulator.SimDevice.DC33C1C6-5EBB-4156-9F1E-C1844955433D.launchd_sim";

SpringBoard[34185]: [KeyboardArbiter] HW kbd: Failed to set (null) as keyboard focus
com.apple.CoreSimulator.SimDevice.DC33C1C6-5EBB-4156-9F1E-C1844955433D.launchd_sim[34164] (UIKitApplication:com.apple.test.MyAppUITests-Runner[0xc278][34190][34865]): Service exited with abnormal code: 1
assertiond[34190]: Ignoring assertion request named "Deliver Message" from <BSProcessHandle: 0x7fd178711850; SpringBoard:34185; valid: YES> because process  pid 34865; bundleID (null)  is unknown.
assertiond[34190]: Deleted job with label: UIKitApplication:com.apple.test.MyAppUITests-Runner[0xc278][34190]

更新:添加测试类代码

import XCTest

class ViewControllersUITests: XCTestCase 

    func testTapNumberButtonIncrementsScore() 
        let app = XCUIApplication()
        let numberButton = app.buttons["numberButton"]

        numberButton.tap()
        let newScore = numberButton.label
        XCTAssertEqual(newScore, "1")
    


【问题讨论】:

你能发布你的测试类代码吗? @joern 刚刚用测试类代码更新了问题! 【参考方案1】:

啊,我觉得我很愚蠢。查看另一个应用程序,我的测试类中缺少以下代码:

override func setUp() 
    super.setUp()

    continueAfterFailure = false
    XCUIApplication().launch()

最重要的是XCUIApplication().launch() 位。

【讨论】:

以上是关于iOS UI 测试失败,因为“应用程序未运行,无法获取辅助功能数据。您调用 -launch 了吗?”的主要内容,如果未能解决你的问题,请参考以下文章

关于iOS测试

iOS/Swift:用于 UI 测试的“没有这样的模块...”

在 UI 测试中填充 TextField 失败

重试失败的 xcodebuild 测试

ui测试时如何查看应用程序日志

Xcode 8项目构建成功但UI测试构建失败[关闭]