ios - 如何使用 XCUITest 测试 UIImageView 是否包含具有特定名称的图像?
问题描述
我有一个collectionView,它有一堆单元格,每个单元格中都包含一个UIImageView。我想在每个单元格中测试,imageView 的图像是否与正确的图像名称匹配。
在生产代码中,我向 UIImageView 示例添加了一个可访问性标识符:“我的图像视图”。我遍历包含图像名称的字符串数组并根据索引设置单元格的图像,例如: ["image0.png", "image1.png", "image2.png"] 所以索引 0-2 处的单元格将分别有那些图像。
在我的 XCUITest 文件中,我正在尝试这样的事情:
XCTAssert(cells.images["My Image View"].exists, "message here")
但这不会检查单元格的 imageView 是否具有正确的图像。任何人都可以提出更好的解决方案吗?
我之前访问过的一些参考资料:
如何在 iOS XCTest 中测试 UIImageView 元素?
如果以前有人问过这个问题,我很抱歉,我找不到任何东西。
编辑:我找到了解决方案。
let image = cells.element(matching: , identifier: )
我不知道标识符参数实际上使用图像名称,所以如果我传递图像名称,我可以断言图像的存在。
let image = cells.element(matching: .image, identifier: "myImage.png")
这行得通。所以当我遍历包含图像名称的字符串数组时,我还可以检查与图像索引对应的索引处的单元格是否正确。
我还忘了提到图像没有存储在资产中,而是通过 json 获取。
cesararch 下面的答案是最接近的,所以我将其标记为正确。
解决方案
XCTest UI 测试旨在编写为功能测试,而不是检查显示是否正确。由于图像没有表现出供 UI 测试观察的行为,因此 UI 测试并不是这项工作的最佳工具。
在这种情况下,您应该编写单元测试来断言正确的图像已分配给您的图像视图,因为单元测试将有权访问正确级别的信息,以允许您检查传递给视图表示层的数据并断言分配的图像是您期望的图像。
推荐阅读
- log4j2 - 如何为 log4j2 定义全局布局?
- java - 为什么休眠会产生不必要的约束?
- java - 如何在 IntelliJ 中查看来自 JDK 的特定 Java 源代码文件?
- python - 无法为 postgres 12 安装 plpython
- go - 带有 MySQL 驱动程序的 Golang
- rust - 没有预建的 wasm-opt 二进制文件
- kotlin - 为什么我无法在新版本的 IntelliJ Idea 中运行我的旧 Kotlin 程序?
- javascript - 下拉列表选项选择不生成第二个下拉列表选项
- typescript - 量角器 - 从下拉菜单中选择项目
- sms - 使用 C# SDK 接收文本