20

我最近刚刚了解了 Xcode 中的单元测试。现在我正在尝试 Xcode 7,当我创建一个新项目时,我看到有一个新的 UI 测试组。

在此处输入图像描述

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

笔记

4

2 回答 2

49

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

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

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

例子

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

设置

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

在此处输入图像描述

  • 如果您要向 Xcode 7 之前创建的项目添加 UI 测试,请参阅此答案。(文件 > 新建 > 目标 > 测试 > Cocoa Touch UI 测试包)

  • 将 aUILabel和 a添加UIButton到情节提要

在此处输入图像描述

  • 在 中创建 @IBOutlet 和 @IBActionViewController并在按下label时更改文本button

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

做测试

  • 打开YourProject UITests 文件。

在此处输入图像描述

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

在此处输入图像描述

  • 按下红色的录制按钮

在此处输入图像描述

  • 在应用程序中,(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 测试。它通过时应该变成绿色。

在此处输入图像描述

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

进一步研究

于 2015-07-24T01:33:50.150 回答
7

@Suragch +1 回答。我观察到并想分享的一件事是 UI 测试用例中的每个函数都必须以“测试”开头。您可以在此之后附加额外的名称。只有这样按钮(用于单击开始测试)才会出现。

于 2015-11-16T10:00:02.757 回答