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

使用Xcode UI测试,是否可以在外部项目/存储库中测试应用程序?,xcode,xctest,xcode-ui-testing,Xcode,Xctest,Xcode Ui Testing,我正在寻找一种将UI测试与主应用程序所在的原始存储库分离的方法。是否可以将UI测试代码放在另一个存储库中,以某种方式引用主应用程序并对其进行测试?从Xcode 9开始,只要您愿意放弃一些功能,这是可能的。创建UI测试捆绑包后,可以转到目标设置以指定它没有目标应用程序。您还可以创建一个UI测试包,而无需指定一个测试包开始。删除目标应用程序后,可以使用接受捆绑包标识符的初始值设定项,而不是使用XCUIApplication的默认初始值设定项 您的测试结果将如下所示: var app: XCUIApp

我正在寻找一种将UI测试与主应用程序所在的原始存储库分离的方法。是否可以将UI测试代码放在另一个存储库中,以某种方式引用主应用程序并对其进行测试?

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

您的测试结果将如下所示:

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文件,因此安装该应用程序非常简单