在UI测试目标中,似乎没有内置的访问模型或组成您的应用程序的类.例如. [UIApplication sharedApplication]不能从您的UI测试中调用.
这意味着“应用程序测试”和“UI测试”存在于可能不可跨越的差距.
如here所述:
The problem is that Xcode’s UI testing does not allow access to the actual app.
问题:
这个鸿沟能弥合吗?如果是这样,具体如何使用构建和链接器设置以及可能在github上运行的xcodeproj.
>在Apple文档中可以找到这个鸿沟的明确声明.
†在编写时,beta软件.
解决方法
UI测试是一个black-box testing框架.你不应该知道你正在测试的代码的实现.
例如,您应该只关心标签上的值更改,而不是控制器将正确的数据传递给视图.您可以从应用程序的角度来看待用户界面测试.她不关心ItemsViewController的工作原理(甚至是否存在),那么为什么UI测试呢?
让它“工作”
话虽如此,我明白你的沮丧.如果您可以启动视图控制器,然后点击UI测试并进行断言,那将是巨大的.但是,从Beta 5起,这是不可能的.
有趣的是,您可以在UI测试的顶部使用简单的@testable导入ModuleName创建应用程序对象的实例.请注意,您无法通过.tap()方法实际进行交互,因为它是一个UI *类,而不是XCUI *类.
考虑甜甜圈是应用程序的模块名称.
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()! } }
原文地址:https://www.jb51.cc/iOS/329617.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。