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】:
我会说你为你想要点击的按钮设置了不同的accessibilityLabel
或accessibilityIdentifier
,然后比较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中获取标签文本