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

时间:2015-08-17 06:22:41

标签: ios swift xcode ios9 ui-testing

我收到了一个错误:

  

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()
    }
}

这是DBTabBarController.swift

中定义的方式
let DBTabBarOrderedIndexesKey = "TabBarOrderedIndexesKey"

信息窗格:

enter image description here

常规窗格:

enter image description here

4 个答案:

答案 0 :(得分:11)

结论是:它无法正常工作

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

  

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

答案 1 :(得分:1)

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

enter image description here

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

enter image description here

但是请记住,您正在访问的“应用程序代码”是在UI测试目标中运行的代码,而不是在实际应用中运行的代码。因此,请勿使用它来检查或修改应用程序状态。

答案 2 :(得分:1)

当我添加我的 swift 包并尝试在其中使用字符串变量时,我遇到了同样的问题。修复只是在目标常规部分的框架、库部分中添加 swift 包enter image description here

答案 3 :(得分:0)

我在运行测试用例时收到了类似的错误。我发现在我的测试用例中从主 iOS 应用程序项目的另一个文件中引用了某些字符串值。他们不能在这里访问。 我通过在我的测试用例方法中创建一个局部常量来解决它。您可以提出更好的方法。