use*_*057 5 core-data swift xcode-ui-testing
我的应用程序目前使用 Core Data 作为持久性,我想用一些模拟数据做一些 UI 测试。目前,我正在使用之前在开发时存储的数据运行 UI 测试。理想情况下,我想在 MOC 中插入一些模拟数据,以便我编写更多的 UI 测试。对于我的单元测试,我将 JSON 文件中的数据插入到 setup 函数中的托管对象上下文中。我想知道这是否可以用于 UI 测试?
我试过在网上查找这个,但我从人们那里读到了很多不同的答案,我现在很困惑。如果这是不可能的,有人可以推荐使用核心数据进行 UI 测试的最佳实践吗?
无法在 UITest 类中创建模型数据,因为 UITest 类无法访问您的应用程序代码。
来自苹果的文档:
UI 测试在根本上不同于单元测试。单元测试使您能够在应用程序的范围内工作,并允许您使用对应用程序变量和状态的完全访问权限的函数和方法。UI 测试以用户无法访问应用程序的内部方法、函数和变量的相同方式来测试应用程序的 UI。这使您的测试能够以与用户相同的方式查看应用程序,从而暴露用户遇到的 UI 问题。
如果您想在运行 UITests 时使用模拟数据,您已经在应用程序代码中创建了模拟数据,然后确保仅在运行 UITests 时创建模拟数据。
要完成这项工作,您必须执行以下步骤:
1) 在 UITest 类中启动应用程序时添加启动参数:
func testExample() {
let app = XCUIApplication()
app.launchArguments.append("IS_RUNNING_UITEST")
app.launch()
// Do your tests
}
Run Code Online (Sandbox Code Playgroud)
2) 将创建模拟数据的代码添加到您的应用程序(例如在您的AppDelegate)中,并在存在启动参数时运行它:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
if ProcessInfo.processInfo.arguments.contains("IS_RUNNING_UITEST") {
// insert data from a JSON file into the managed object context
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1447 次 |
| 最近记录: |