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。 它通过时应该变成绿色。
- 而已! 这表明
UIButton
和UILabel
存在,并且标签的文本发生了变化。 如果你想看到它失败(一个好主意),你可以改变“你好”的东西。
进一步研究
- Xcode中的UItesting
- 探索Xcode 7的新UItestingfunction
- Xcode 7的UItesting,一看
- Xcode 7中的UItesting
@Surag1 +1的答案。 有一件事我观察并且想要分享UItesting用例中的每个函数都必须以“test”开头。 之后你可以追加额外的名字。 只有这样才会出现button(点击开始testing)。