Realm

时间:2017-04-06 14:49:16

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

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

UI测试目标

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

应用

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

如何在测试目标和应用程序中同时看到“同一领域对象”?

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

1 个答案:

答案 0 :(得分:2)

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

来自Apple的docs

  

UI测试以与用户相同的方式练习应用的UI   无法访问应用程序的内部方法,功能和   变量。 ...您的测试代码作为一个单独的过程运行,合成   应用中的UI响应的事件。

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

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

<强> 1。通过应用的UI

创建cat对象

某处你可能有一个“添加猫”按钮。按下您的UITest中的那个,添加一个类似于使用的猫,然后断言已将猫添加到列表中。这就是UITests的用途。像用户一样使用应用程序并测试用户与应用程序交互的结果。

<强> 2。使用UnitTests:

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