Xcode UI测试示例

时间:2015-07-24 01:33:50

标签: ios xcode ui-testing xcode-ui-testing

我刚刚了解了Unit Testing in Xcode。现在我正在尝试使用Xcode 7,当我创建一个新项目时,我发现有一个新的UI测试组。

enter image description here

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

备注

2 个答案:

答案 0 :(得分:46)

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

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

在撰写本文时,很难访问UI组件的许多属性,但只需通过点击它们并轻扫它们即可确认它们在那里。

实施例

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

设置

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

enter image description here

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

  • 在故事板中添加UILabelUIButton

enter image description here

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

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

进行测试

  • 打开 YourProject UITests文件。

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,并且标签的文本发生了变化。如果你想看到它失败(一个好主意),你可以改变"你好"别的什么。

进一步研究

答案 1 :(得分:7)

@Suragch +1代答。我观察并希望分享的一件事是,UI测试用例中的每个函数都必须以" test"开头。之后你可以追加额外的名字。只有这样才会出现按钮(用于点击开始测试)。