关于属性值 iOS/Swift 的 UI 测试

Posted

技术标签:

【中文标题】关于属性值 iOS/Swift 的 UI 测试【英文标题】:UI Testing with respect to a attribute value iOS/Swift 【发布时间】:2019-05-07 13:48:19 【问题描述】:

我正在为我的应用程序编写 UI 测试。我在PhotosViewController 中有一个名为numberOfPhotos 的属性,它的值是从另一个ViewController 设置的。每当numberOfPhotos 为2 时,我当前的PhotosViewController 中应该只显示两张照片。

我能够测试所需数量的图像是否可见,但我无法从 UITests 类设置 numberOfPhotos。无论如何我可以设置这个值并继续测试。

Currents 我正在编辑代码以设置numberOfPhotos 的值并对其进行测试。无论如何我可以从 UITests 类设置这个值。谢谢。

【问题讨论】:

【参考方案1】:

它们是不同的应用程序,这就是您不能直接设置的原因。 UiTests 使用运行您的应用程序的测试运行器。有一种方法可以使用launchArguments 来做你想做的事。

根据您的测试:

let app = XCUIApplication()
app.launchArguments = XCUIApplication().launchArguments + ["UiTesting", "numberOfPhotos", "2"])
app.launch()

来自您的应用:

var isUiTesting: Bool 
    return ProcessInfo.processInfo.arguments.contains("UiTesting")

在您的控制器中编写一些代码来检查isUiTesting 属性并根据接下来的几个launchArguments 设置照片的数量。您必须对启动参数进行一些解析。

【讨论】:

以上是关于关于属性值 iOS/Swift 的 UI 测试的主要内容,如果未能解决你的问题,请参考以下文章

iOS/Swift:用于 UI 测试的“没有这样的模块...”

iOS Swift UI Tests (XCUITests) 稳定性问题 - fastlane scan

如何在 iOS + Swift 中关闭我的应用程序的 Internet 访问

iOS Swift4如何保护接口中定义的计算属性不被赋值?

iOS Swift 如何更改或更新自定义 UITableViewCell 中的 UILabel 属性

iOS / Swift(UI)始终运行的后台计算线程的高效实现-GCD案例?