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

标签 xcode xctest xcode-ui-testing

我正在寻找一种方法将 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 文件,因此安装应用程序非常简单。

关于xcode - 通过 Xcode UI 测试,是否可以在外部项目/存储库中测试应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48928321/

相关文章:

ios - 如何使 UIControl 在 XCUITest 中显示为按钮?

ios - 在 UITestCase 期间使用可访问性标识符识别 UISearchBar

swift - MPVolumeView 缩略图未正确水平绘制

iphone - iPhone SDK:国际化无效

ios - 如何从UI Xctest调用Appdelegate的 "OpenURL"函数

Cordova + XCTest 结果在 'Undefined symbols for architecture i386'

ios - 如何从 UI 测试访问 App Delegate?

xcode - Xcode 中的 Vim 键绑定(bind)?

ios - SwiftUI Preview 不适用于 FetchRequest 和 Init

ios - XCTest - 如何检查 HTML 复选框的状态?