Swift - 点击按钮时如何测试标签是不是已更新

Posted

技术标签:

【中文标题】Swift - 点击按钮时如何测试标签是不是已更新【英文标题】:Swift - How do you test whether a label has been updated when a button is tappedSwift - 点击按钮时如何测试标签是否已更新 【发布时间】:2016-05-23 18:25:15 【问题描述】:

我使用了一个非常简单的计算器,并尝试测试点击按钮时标签是否会更新。

我的测试方法如下:

let app = XCUIApplication()
app.buttons["9"].tap()

我可以直观地看到标签正在更新,但我不确定如何测试它。

我想我需要使用XCUIElementQuery API 来查询标签,然后断言标签文本已经改变。我只是不知道该怎么做。

我不确定以下问题:

我是否需要知道标签的值是什么才能查询? 有没有办法在应用程序启动时查询标签而不知道值是什么?

【问题讨论】:

【参考方案1】:

使用 UI 测试,您可能不得不以不同的方式思考您的问题。与其断言某事物已改变,不如检查新事物是否存在

在实践中,这意味着检查带有您期望值的标签是否出现。不要检查现有状态是否更改为正确状态。

因此,在您的示例中,您可以执行以下操作。这将检查当您点击“9”按钮时是否出现带有文本“42”的标签。

let app = XCUIApplication()
app.buttons["9"].tap()
XCTAssert(app.staticTexts["42"].exists)

【讨论】:

staticTexts 是指标签文本还是指按钮的文本值? staticTexts 仅指标签,使用buttons 表示UIButton【参考方案2】:

我会说你为你想要点击的按钮设置了不同的accessibilityLabelaccessibilityIdentifier,然后比较tap()之前和之后的值,并使用XCTAssertNotEqual断言检查label是否发生了变化,

在应用程序代码中:

button.accessibilityIdentifier = "TappableButton"

然后在测试文件中:

let app = XCUIApplication() let buttonLabel = app.buttons["TappableButton"].label app.buttons["TappableButton"].tap() XCTAssertNotEqual(buttonLabel, app.buttons[TappableButton].label)

【讨论】:

以上是关于Swift - 点击按钮时如何测试标签是不是已更新的主要内容,如果未能解决你的问题,请参考以下文章

IOS swift如何在标签点击时在TableView中获取标签文本

如何在 Swift 中使用 UIKit 注册多个按钮点击?

更新 UIView 会产生子视图对齐/Swift 的散列

如何在 swift tableviewCell 中集成“喜欢”按钮

如何在标签栏按钮点击上创建幻灯片菜单(swift)

UITests:如何测试标签是不是在更改后包含一些文本?