gpt4 book ai didi

Xcode 7 : is chasm between app tests and UI tests unbridgeable?

转载 作者:行者123 更新时间:2023-12-04 01:08:11 26 4
gpt4 key购买 nike

Xcode 7† 提供了一种直接测试 UI 的新方法,包括一个新的测试目标“iOS UI 测试包”(或“OS X”)。

enter image description here

在 UI 测试目标中,似乎没有对构成您的应用程序的模型或类的内置访问。例如。 [UIApplication sharedApplication]无法从您的 UI 测试中调用。
这意味着“应用程序测试”和“UI 测试”存在于一个可能无法逾越的鸿沟中。

如前所述here :

The problem is that Xcode’s UI testing does not allow access to the actual app.



问题:
  • 这个鸿沟能被弥合吗?如果是这样,如何详细说明构建和链接器设置以及可能的工作xcodeproj在github上。
  • 在 Apple 文档中,哪里可以找到关于这种分歧的明确声明。


  • † 在撰写本文时,测试版软件。

    最佳答案

    黑盒测试

    UI 测试是 black-box testing框架。您不必对正在测试的代码的实现有任何了解。

    例如,您应该只关心标签上的值发生变化,而不是 Controller 将正确的数据传递给 View 。您可以从 中想到 UI 测试。您应用的 的用户看法。她不在乎你的ItemsViewController有效(甚至它存在),那么为什么要进行 UI 测试呢?

    让它“工作”

    话虽如此,我理解你的沮丧。如果您可以启动一个 View Controller ,然后使用 UI 测试并做出断言,那就太好了。但是,从 Beta 5 开始,这是不可能的。

    但是,有趣的是,您可以使用简单的 @testable import ModuleName 创建应用程序对象的实例。在 UI 测试的顶部。请注意,您实际上无法通过 .tap() 与它进行交互。 -like 方法,因为它是 UI*类,而不是 XCUI*一。

    考虑Donut成为应用程序的模块名称。

    import XCTest
    @testable import Donut

    class DonutUITests: XCTestCase {
    let app = XCUIApplication()

    override func setUp() {
    continueAfterFailure = false
    app.launch()
    }

    func testItemsViewController() {
    let controller = ItemsViewController()
    controller.addItemButton.tap() // <---- UIButton does not respond to tap()!
    }
    }

    关于Xcode 7 : is chasm between app tests and UI tests unbridgeable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31521259/

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