在 XCUITest 中使用 Xcode
如果你现在使用UITestCase,你不能直接打开D控制器
每次都应该执行顺序(A->B->C->D),因为所有测试用例规范都会导致应用程序启动,尤其是登录,每次 UITest 都应该需要 SignOut
使用XCUI Test for testCase的补充方式
提供A、B、C的序列函数作为协议,减少重复代码
ex) 定义登录协议
protocol Loginable {
var app: XCUIApplication! { get }
func login()
}
extension Loginable {
func login() {
//do login ... typting textfield , tap login button
}
}
使用 Loginable 扩展您的 A、B、C、D UITestCase 以删除重复代码(因为每个 D uitest 案例都应在示例中登录)
对序列函数进行扩展以重用每个案例
替代方案是
使用KIF Functional Test framework
KIF 可以基于 XCTest 而不是 XCUITest 测试 UITest
KIF 可以像单元测试一样访问您的类,这意味着
你可以将你的 D ViewController 显示到窗口(直接设置 rootViewController)并测试 KIF UItest 功能
例如)KIF
import XCTest
@testable import YourApp
class DViewControllerTests: XCTestCase {
var sut: DViewController!
var window: UIWindow!
override func setUp() {
super.setUp()
let appDelegate = UIApplication.shared.delegate as! AppDelegate
window = appDelegate.window
sut = //Initialize your D ViewController
window.rootViewController = sut
RunLoop.current.run(until: Date()) // cause viewDidLoad
}
func testSomeCase() {
tester().tapView(withAccessibilityIdentifier: "someIdentifier")
...
}
}
KIF 可以直接启动 D 控制器设置 rootViewController 到窗口