【发布时间】:2016-07-19 06:29:09
【问题描述】:
Xcode 7.3
打开雷达:rdar://25456632
在我的应用程序中,我有一个字符串枚举,用于定义一些可访问性标识符。例如
enum AccessibilityIds:String {
case ButtonFoo
}
我已经构建了一些要搜索控件的 UI 测试。所以我做了这样的事情:
XCUIApplication().buttons[AccessibilityIds.ButtonFoo.rawValue]
XCode 认为这很好,并没有说明任何错误就行了。但是,当我编译 UI 测试时,我得到了这个编译器错误:
Undefined symbols for architecture x86_64:
"myApp.AccessibilityIds.rawValue.getter : Swift.String", referenced from:
(extension in myAppUITests):__ObjC.XCTestCase.fooButton (myApp.AccessibilityIds) -> Swift.Bool in TestCaseExtensions.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
交叉引用 UI 测试目标和单元测试目标(编译良好并使用枚举),我发现 UI 测试没有设置 Test Host。设置它意味着 UI 测试代码现在可以编译,但是测试本身随后失败并出现 SIGKILL 和错误:
testFooButton() encountered an error (Lost connection to test manager service. If you believe this error represents a bug, ...
看来我无法在 UI 测试代码中访问枚举 rawValues。有没有其他人遇到过这个并设法弄清楚?
【问题讨论】:
-
这可能是一个导入问题 - 需要将所有文件添加到测试目标吗?
-
我不这么认为。我导入
@testable import myApp。我还从单元测试中成功访问了这个枚举,并且发现枚举上定义的任何属性或函数都是不可见的。 -
有一个已知的涉及单例枚举的崩溃错误,这就是您所拥有的。尝试为您的枚举提供另一个案例(即使您从未将其用于任何事情),看看是否能解决问题。
-
问题似乎与您的构建设置有关。该错误抱怨 Mac OS X(模拟器)架构缺少代码。您是否更改了任何构建设置?那些与 CPU 架构或 SDK 特别相关的可能值得怀疑。
-
有什么进展吗?在 Xcode 8.2 上仍然发生在我身上
标签: ios swift enums ui-testing