gpt4 book ai didi

ios - Xcode UI 测试示例

转载 作者:IT王子 更新时间:2023-10-29 08:10:10 26 4
gpt4 key购买 nike

我最近才了解到 Unit Testing in Xcode .现在我正在试用 Xcode 7,当我创建一个新项目时,我看到有一个新的 UI 测试组。

enter image description here

我看了WWDC 2015 video这非常好,但是你有一个 super 简单的例子我可以自己看吗?视频示例对我来说有点太复杂了。

注意事项

最佳答案

使用单元测试 来测试类中方法的有效性。您使用它们来测试您编写的代码。 (有关在 Xcode 中设置简单单元测试的信息,请参阅 my other example。)

使用UI 测试 来检查用户界面的有效性。可以把它想象成让你自己的机器人通过并与你的应用程序进行普通用户会进行的所有正常交互。这样可以节省您自己做的时间。

在撰写本文时,很难访问 UI 组件的许多属性,但只需通过点击和滑动它们进行测试即可确认它们在那里。

例子

这是我能想到的最简单的设置和 UI 测试:按下按钮会更改标签文本。

设置

  • 在 Xcode 7+ 中为 iOS 9.0+ 创建一个新项目。
  • 确保选中“包含 UI 测试”

enter image description here

  • 如果您要将 UI 测试添加到 Xcode 7 之前创建的项目,请参阅 this answer . (文件 > 新建 > 目标 > 测试 > Cocoa Touch UI 测试包)

  • 在 Storyboard中添加一个UILabel和一个UIButton

enter image description here

  • ViewController 中创建一个 @IBOutlet 和 @IBAction,并在按下 button 时更改 label 文本。

    import UIKit
    class ViewController: UIViewController {
    @IBOutlet weak var label: UILabel!
    @IBAction func button(sender: AnyObject) {
    label.text = "Hello"
    }
    }

做测试

  • 打开YourProjectUITests 文件。

enter image description here

  • 将光标放在 testExample() 方法中。 (您可以删除评论)

enter image description here

  • 按红色的录制按钮

enter image description here

  • 在应用中,(1) 点击标签,(2) 点击按钮,然后 (3) 再次点击标签。 (4) 再次按下录音按钮停止录音。以下代码应该已经自动为您生成:

    func testExample() {

    let app = XCUIApplication()
    app.staticTexts["Label"].tap()
    app.buttons["Button"].tap()
    app.staticTexts["Hello"].tap()
    }
  • 使用 staticText 行作为制作 XCTAssert 的起点。现在你应该:

    func testExample() {

    let app = XCUIApplication()
    XCTAssert(app.staticTexts["Label"].exists)
    app.buttons["Button"].tap()
    XCTAssert(app.staticTexts["Hello"].exists)
    }
  • 按左侧的菱形以运行 UI 测试。当它通过时应该变成绿色。

enter image description here

  • 就是这样!这表明 UIButtonUILabel 存在并且标签的文本已更改。如果您想看到它失败(一个好主意),您可以将“Hello”更改为其他内容。

进一步研究

关于ios - Xcode UI 测试示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31600777/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com