黑盒测试
UI 测试是一个黑盒测试框架。您不必知道有关您正在测试的代码的实现的任何信息。
例如,您应该只关心标签上的值发生变化,而不是控制器将正确的数据传递给视图。您可以从应用程序的用户角度考虑 UI 测试。她不在乎您的ItemsViewController
工作方式(甚至它是否存在),那么为什么要进行 UI 测试呢?
让它“工作”
话虽如此,我理解你的沮丧。如果您可以启动一个视图控制器,然后使用 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()!
}
}