我正在编写UI测试,我需要访问视图的@State属性,只要这个视图中有一个按钮。
struct CircleImage: View {
@State var imageName: String = ""
var body: some View {
// ...
Button(action: {}) {}
.accessibility(identifier: "myButton")
}
}就像我用let myButton = app.buttons["myButton"]很容易得到按钮一样。但出于测试目的,我还需要访问imageName属性。我尝试在ContentView中添加标识符,但它覆盖了CircleImage视图(包括按钮)中的所有可访问性( CircleImage().accessibility(identifier: "circleImageView"):)。
发布于 2019-12-09 02:57:06
UI测试不测试内部状态。它们只测试UI可见的行为。要针对此类型编写UI测试,imageName应产生一些行为,然后测试该行为是否可见。在这种情况下,您可以将imageName转换为可访问性标签,这将允许VoiceOver读取它(顺便说一下,还允许UI测试访问它)。
The best way to make an app UI-testable is to first make it accessible.在VoiceOver上试用你的应用程序。如果它在那里工作得很好,那么它可能也会在UI测试中工作得很好。
https://stackoverflow.com/questions/59237968
复制相似问题