Xcode 7.3
Open Radar: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测试没有设置测试主机。设置它意味着UI测试代码现在将编译,但是测试本身随后失败并出现SIGKILL错误:
testFooButton() encountered an error (Lost connection to test manager service. If you believe this error represents a bug, ...
所以看来我无法在UI测试代码中访问枚举rawValues。有没有其他人遇到这个并设法弄明白?
答案 0 :(得分:1)
我仍然在Xcode 11.2.1中看到这一点
作为一种解决方法,我将枚举的文件私有副本放置在Tests.swift文件中。 这对我来说没有任何问题或警告。