"unsafeMutableAddressor:Swift.String",引自:.."

Bar*_*zyk 15 xcode ui-testing ios swift ios9

我收到一个错误:

Undefined symbols for architecture x86_64: "DirectBistro.DBTabBarOrderedIndexesKey.unsafeMutableAddressor : Swift.String", referenced from: DirectBistroUITests.TabBarControllerTests.setUp (DirectBistroUITests.TabBarControllerTests)() -> () in TabBarControllerTests.o ld: symbol(s) not found for architecture x86_64

这是我的简单UITest课程:

import XCTest
@testable import DirectBistro

class TabBarControllerTests: XCTestCase {

    override func setUp() {
        super.setUp()

        let defaults = NSUserDefaults.standardUserDefaults()
        defaults.setObject([], forKey: DBTabBarOrderedIndexesKey)
        defaults.synchronize()
    }
}
Run Code Online (Sandbox Code Playgroud)

这就是它的定义DBTabBarController.swift:

let DBTabBarOrderedIndexesKey = "TabBarOrderedIndexesKey"
Run Code Online (Sandbox Code Playgroud)

信息窗格:

在此输入图像描述

常规窗格:

在此输入图像描述

Bar*_*zyk 14

结论是:它不会起作用.

我向Apple报告这是一个错误,并得到了回复:

UI测试与单元测试的执行方式不同 - 单元测试在应用程序进程内运行,因此可以访问应用程序代码.UI测试在应用程序外部的单独进程中执行,因此可以模拟用户与应用程序交互的方式.您不希望自己能够通过UI测试访问您的应用类.


Eri*_*ric 6

可以访问的应用程序代码从您的UI测试。只需将源文件添加到 UI 测试目标:

在此处输入图片说明

然后,您可以从 UI 测试代码中访问该应用程序代码:

在此处输入图片说明

但请记住,您从 UI 测试访问的应用程序代码是在 UI 测试目标(MyAppUITests) 中运行的代码,它与在实际应用程序目标 (MyApp) 中运行的代码不对应。所以不要用它来检查或修改应用程序状态。