首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xcode 7:应用程序测试和UI测试之间的鸿沟是不可弥合的吗?

Xcode 7:应用程序测试和UI测试之间的鸿沟是不可弥合的吗?
EN

Stack Overflow用户
提问于 2015-07-20 16:08:01
回答 1查看 1K关注 0票数 12

Xcode 7†有一种直接测试UI的新方法,包括一个新的测试目标“†UI测试绑定”(或"OS“)。

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

如前所述,这里

问题是Xcode的UI测试不允许访问实际的应用程序。

问题:

  1. 这个鸿沟能被弥合吗?如果是这样的话,详细地讲如何使用构建和链接器设置,以及如何在github上运行xcodeproj
  2. 在苹果的文档中,哪里可以找到这一鸿沟的明确声明。

†在编写时,测试版软件。

EN

回答 1

Stack Overflow用户

发布于 2015-08-18 15:19:49

黑匣子测试

UI测试是一个黑匣子测试框架。您不应该知道您正在测试的代码的实现情况。

例如,您应该只关心标签上的值是否发生变化,而不是控制器将正确的数据传递给视图。您可以从应用程序的用户的视角来考虑UI测试。她并不关心您的ItemsViewController是如何工作的(甚至不关心它是否存在),那么为什么UI测试应该这样做呢?

让它“工作”

话虽如此,我理解你的沮丧。如果你能旋转一个视图控制器,然后点击UI测试和做出断言,那就太好了。然而,从Beta 5开始,这是不可能的。

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

假设Donut是应用程序的模块名。

代码语言:javascript
复制
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()!
    }
}
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31521259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档