这是一个用Swift编写的iOS库,它简化了测试UIAlertController警报的过程。库允许在单元测试中检查警报可见性和执行其操作。
以下是一个单元测试示例,用于测试显示具有“删除”和“关闭”两个操作的警报的删除按钮。
func testTapRemove() {
viewController.didTapRemoveButton(UIButton())
// Verify alert is presented
XCTAssert(viewController.testableAlert!.visible)
// Verify alert title
XCTAssertEqual(viewController.testableAlert!.alert.title, "Do you want to remove this item?")
// Verify the buttons
XCTAssertEqual(viewController.testableAlert!.actions.count, 2)
XCTAssertEqual(viewController.testableAlert!.actions[0].title, "Yes, remove this item")
XCTAssertEqual(viewController.testableAlert!.actions[1].title, "Close")
// Press "Remove" button
viewController.testableAlert.simulateAction("Yes, remove this item")
// Verify the item was removed
XCTAssert(viewController.itemIsRemoved)
}
您有三种方法可以将TestableAlert添加到项目中。
添加源(iOS 7+)
只需将TestableAlert.swift文件添加到您的Xcode项目中即可。
使用Carthage设置(iOS 8+)
将github "marketplacer/TestableAlert" ~> 1.0
添加到您的Cartfile,并运行carthage update
。
使用CocoaPods设置(iOS 8+)
如果您使用CocoaPods,请将此文本添加到您的Podfile并运行pod install
。
use_frameworks!
pod 'TestableAlert', '~> 1.0'
如果您使用Carthage或CocoaPods设置方法,请将import TestableAlert
添加到您的源代码中。
1) 在您想要显示警报的视图控制器中创建一个实例属性。
class ViewController: UIViewController {
var testableAlert: TestableAlert?
// ...
}
2) 在显示警报的代码中初始化一个UIAlertController对象,就像您通常所做的那样。
let alertController = UIAlertController(
title: "Do you want to cancel this operation?", message: nil,
preferredStyle: .ActionSheet)
3) 使用您刚刚创建的警报创建一个TestableAlert实例。
testableAlert = TestableAlert(alert: alertController)
4) 向测试警报实例添加操作。
testableAlert?.addAction("OK", style: .Destructive) { _ in
// Do something
}
5) 在视图控制器中显示警报。
testableAlert?.present(self)
以下是视图控制器全文代码
import UIKit
import TestableAlert
class ViewController: UIViewController {
var testableAlert: TestableAlert?
func showAlert() {
let alertController = UIAlertController(
title: "Do you want to cancel this operation?", message: nil, preferredStyle: .ActionSheet)
testableAlert = TestableAlert(alert: alertController)
testableAlert?.addAction("OK", style: .Destructive) { _ in
// Do something
}
testableAlert?.addAction("Cancel", style: .Cancel, handler: nil)
testableAlert?.present(self)
}
}
以下是如何从您的视图控制器单元测试中验证警报并执行其操作的方法。
在您的测试中,您可能会需要获取UIAlertController对象以验证其标题、消息、文本字段等。可以通过访问alert
属性来完成。
testableAlert.alert
检查visible
属性,以查看警报是否已被显示。
XCTAssert(testableAlert.visible)
调用 simulateAction
方法来模拟一个操作。它将调用操作处理程序并关闭警告。
testableAlert.simulateAction("OK")
使用 actions
属性以获取警告的
testableAlert.actions
TestableAlert 库是在 MIT 许可证 下发布的。