访问枚举rawValue时,Swift UI测试崩溃

时间:2016-03-31 01:26:26

标签: ios swift enums ui-testing

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。有没有其他人遇到这个并设法弄明白?

1 个答案:

答案 0 :(得分:1)

我仍然在Xcode 11.2.1中看到这一点

作为一种解决方法,我将枚举的文件私有副本放置在Tests.swift文件中。 这对我来说没有任何问题或警告。