gpt4 book ai didi

ios - 使用 XCUI 进行 UI 测试

转载 作者:行者123 更新时间:2023-11-28 21:13:45 24 4
gpt4 key购买 nike

我正在尝试在 xCode 8 中对 View Controller 进行单元测试。我能够使用 XCUI 成功地记录、断言和运行它。但我想独立测试特定的 View Controller 。

就像有 4 个 Controller A、B、C 和 D 依次(A->B->C->D)。我想直接启动C Controller 并独立测试它。

我能够以这种方式进行测试,即默认 XCUIApplication 将打开 A Controller ,然后单击您将转到 B Controller 的内容,然后单击 B 中的按钮将带您到 C Controller 。然后你可以测试一下。但我不想按顺序。我想直接测试 C Controller 。

如果有人做过同样的工作,你能帮忙吗?提前致谢。

最佳答案

使用 Xcode 在 XCUITest 中

如果你现在使用UITestCase,是不能直接打开D Controller 的

每次都应该执行顺序 (A->B->C->D),因为所有测试用例规范都会导致应用程序启动,特别是 SignIn,UITest 每次都需要 SignOut

testCase使用XCUI Test的补充方式

提供A、B、C的序列函数作为最小化重复代码的协议(protocol)

例如)定义登录协议(protocol)

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 Controller 设置rootViewController到窗口

关于ios - 使用 XCUI 进行 UI 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42130343/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com