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

Posted

技术标签:

【中文标题】使用 Xcode UI 测试,是不是可以在外部项目/存储库中测试应用程序?【英文标题】:With Xcode UI tests, is it possible to test application in external project/repository?使用 Xcode UI 测试,是否可以在外部项目/存储库中测试应用程序? 【发布时间】:2018-02-22 13:12:26 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于使用 Xcode UI 测试,是不是可以在外部项目/存储库中测试应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

在 XCode Server Bot 上运行 UI 测试时,是不是可以看到实际的模拟器正在运行?

在 Xcode 7.0.1 中进行 UI 测试时,是不是可以使用 Swift 滚动到 Element()?

在 Xcode UI 测试中是不是可以获取视图的方向

可以在外部模块上测试SPI通讯

将单元和 UI 测试添加到 Xcode 中的现有项目

jQuery UI - 在外部单击时关闭对话框