使用XCode UI测试,是否可以在外部项目/存储库中测试应用程序



我正在寻找一种将UI测试与主应用程序所在的原始存储库分开的方法。是否可以在另一个存储库中使用UI测试代码,以某种方式"参考"主应用程序,并测试它?

从Xcode 9开始,只要您愿意放弃一些功能,就可以使用。创建UI测试捆绑包后,您可以转到目标设置以指定其没有目标应用程序。(您也可以创建一个UI测试捆绑包而无需指定一个开始。(您删除了目标应用程序,而不是使用XCUIApplication的默认初始化器,可以使用接受捆绑包标识符的初始化器。/p>

您的测试最终会看起来如下:

var app: XCUIApplication {
    return XCUIApplication(bundleIdentifier: "com.yourdomain.product")
}
func setup() {
    app.launch()
}
func test() {
    app.navigationBar.buttons["Add"].tap()
}

如果您走这条路线,您将失去使用一些功能的能力。即:

  • 您将无法使用Xcode的内置测试记录器。记录按钮将禁用,除非您配置了目标应用程序。话虽如此,您可以在项目中创建一个空的应用程序,然后切换到要录制的应用程序。(也就是说,即使对于单个项目应用程序,我还没有发现Xcode的记录功能非常有用。(

  • Xcode不会自动为您安装您的应用程序。通常这不是问题,因为位于其他存储库中(有时甚至不是Xcode项目(,因此您只需要在开始测试之前就安装它。iOS模拟器允许您拖放.App文件,因此安装应用程序非常容易。

最新更新