【问题标题】:Swift XCTest UI tests with Realm使用 Realm 进行 Swift XCTest UI 测试
【发布时间】:2017-04-06 14:49:16
【问题描述】:

我正在使用 Realm 2.4.2 使用 Swift 3.0 开发我的 UI 测试。

UI 测试目标

  • 使用 pk "cat_01" 创建领域对象 Cat
  • 检查是否存在带有 pk "cat_01" 的 Cat 对象 -> 成功
  • 打开包含从领域获取的猫列表的视图控制器 -> 空列表

应用

  • CatsListViewController:带有猫的表格视图(未找到 Cat 对象)

我怎样才能“看到”测试目标和应用程序相同的领域对象?

想做的是使用launchArguments 变通方法委派应用程序来创建对象。

【问题讨论】:

    标签: swift testing realm xctest xcode-ui-testing


    【解决方案1】:

    您无法在 UITest 目标和应用程序中“看到”相同的 Realm 对象,因为这两个是作为完全独立的进程运行的。

    来自苹果的docs

    UI 测试以与用户相同的方式测试您应用的 UI 无法访问您应用的内部方法、函数和 变量。 ...您的测试代码作为一个单独的进程运行,综合 应用中的 UI 响应的事件。

    换句话说:您的 UITests 在与您的主应用程序交互的单独应用程序中运行(当您运行 UITest 时,您可以看到 Testrunner 应用程序在您的主应用程序启动之前启动和关闭)。这两个应用程序不能共享对象。

    我看到了你可以走的两个方向:

    1.通过应用的 UI 创建猫对象

    您可能有一个“添加猫”按钮。在你的 UITest 中按下它,像使用一样添加一只猫,然后断言这只猫已被添加到列表中。这就是 UITests 的用途。像用户一样使用应用并测试用户与应用交互的结果。

    2。使用单元测试:

    如果您想测试创建的 Realm cat 对象是否正在填充列表,那么 UnitTest 可能是更好的方法。在单元测试期间,您可以完全访问您的应用程序代码。因此,您可以在测试代码中创建一个 cat 对象,应用程序将“看到”它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-30
      • 1970-01-01
      相关资源
      最近更新 更多