Xcode UItesting示例

我刚刚了解了Xcode中的unit testing 。 现在我正在尝试Xcode 7,当我创build一个新项目时,我发现有一个新的UItesting组。

在这里输入图像说明

我观看了WWDC 2015的video ,这很不错,但是你有一个超级简单的例子,我可以通过自己? 这些video的例子对我来说太复杂了。

笔记

  • 下面的答案是我试图弄清楚这一点,但我欢迎任何更好的答案。
  • 我已经阅读了这些关于Xcode UItesting的问题,但它们不同: 在XCode 7项目之前 , 文档 , 重装 , App与UI , ViewController , 多个 值和属性 。

使用unit testing来testing你的类中方法的有效性。 你用它们来testing你写的代码。 (请参阅我的另一个在Xcode中设置简单unit testing的示例 。)

使用UItesting来检查用户界面的有效性。 想象一下,就像拥有自己的机器人一样,通过普通用户进行与应用程序的所有常规交互。 这节省了你自己做的时间。

在写这篇文章的时候,很难访问UI组件的许多属性,但是只需要通过testing就可以轻敲它们,并确认它们在那里。

这是关于我能想到的最简单的设置和UItesting:一个button,当按下时改变标签的文本。

build立

  • 在Xcode 7+中为iOS 9.0+创build一个新项目。
  • 确保包含UItesting已被选中

在这里输入图像说明

  • 如果您将UItesting添加到在Xcode 7之前创build的项目,请参阅此答案 。 (File> New> Target> Test> Cocoa Touch UI Testing Bundle)

  • 添加一个UILabel和一个UIButton到故事板

在这里输入图像说明

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

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

做testing

  • 打开YourProject UITests文件。

在这里输入图像说明

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

在这里输入图像说明

  • 按下红色的录制button

在这里输入图像说明

  • 在应用程序中,(1)点击标签,(2)点击button,然后(3)再次点击标签。 (4)再次按下录制button停止录制。 下面的代码应该已经为你自动生成了:

     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) } 
  • 按左边的菱形运行UItesting。 它通过时应该变成绿色。

在这里输入图像说明

  • 而已! 这表明UIButtonUILabel存在,并且标签的文本发生了变化。 如果你想看到它失败(一个好主意),你可以改变“你好”的东西。

进一步研究

  • Xcode中的UItesting
  • 探索Xcode 7的新UItestingfunction
  • Xcode 7的UItesting,一看
  • Xcode 7中的UItesting

@Surag1 +1的答案。 有一件事我观察并且想要分享UItesting用例中的每个函数都必须以“test”开头。 之后你可以追加额外的名字。 只有这样才会出现button(点击开始testing)。