Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何从Xcode UI测试访问核心数据存储?_Ios_Objective C_Core Data_Xcode Ui Testing - Fatal编程技术网

Ios 如何从Xcode UI测试访问核心数据存储?

Ios 如何从Xcode UI测试访问核心数据存储?,ios,objective-c,core-data,xcode-ui-testing,Ios,Objective C,Core Data,Xcode Ui Testing,我们已经为我们的应用编写了一套使用KIF编写的UI测试,我想将其转换为使用新的Xcode UI测试框架 我们当前的一些测试工作如下: Assert that there are no objects in a core data table Do some stuff in the UI Assert that there are some objects in the core data table Cancel the thing we were doing in the UI Assert

我们已经为我们的应用编写了一套使用KIF编写的UI测试,我想将其转换为使用新的Xcode UI测试框架

我们当前的一些测试工作如下:

Assert that there are no objects in a core data table
Do some stuff in the UI
Assert that there are some objects in the core data table
Cancel the thing we were doing in the UI
Assert that there are no leaked objects in the core data table

我需要查看实际的核心数据存储,而不仅仅是UI,因为泄漏的行不一定会显示在UI中。如何从Xcode UI测试访问核心数据存储?

您可以轻松地对核心数据进行测试,但您描述的测试没有多大意义。如果取消UI操作,则核心数据不会保存到磁盘。当你们提到“表”时,对我来说意味着你们在看磁盘

如果要加载空的核心数据存储,请创建一些对象,验证它们是否已创建,删除它们并确认它们已删除;这一切都可以在UI测试中完成

  • 从磁盘上没有存储开始(或使用内存存储)
  • 运行UI测试
  • 对核心数据执行提取并确认对象在内存中
  • 执行您的取消代码
  • 确认代码已从核心数据中删除

  • 你对哪一部分有意见?

    答案是你不能,除非滥用信号。XCUITES不用于接触金属;它们仅用于练习面向用户的行为

    不过,您描述的测试听起来像是单元测试的完美候选

    更新: (基于OP的评论)


    嗯,据我所知,你有四个选择

  • 您可以创建一个反向通道,该通道将使用通过的信号中断 XCUITest和应用程序内部的分离
  • 你可以 构建功能以模拟单元测试中的UI交互 这样您就可以验证是否存在副作用
  • 您可以添加一个 断言,然后手动执行它
  • 你可以装雷达 询问功能

  • @导入可测试的模块,然后直接访问核心数据存储(就像在应用程序中一样)@ogres我不知道这意味着什么。这是一件迅速的事情吗?我的应用程序和测试都是Obj-C。问题是我无法从UI测试访问核心数据存储,因为新的Xcode UI测试在不同的应用程序中运行。据我所知,主机应用无法访问主机应用的数据。我们当前基于KIF的测试没有这种限制,它们按照您所描述的方式运行。不幸的是,它不适合于单元测试-我想测试的是,在开始创建包含子对象的对象,然后取消创建时所涉及的UI步骤所导致的组合不会留下孤立的子对象。嗯,据我所知,你有四种选择。1-您可以创建一个反向通道,该通道将使用信号传递来打破XUITest和应用程序内部之间的分离。2-您可以在单元测试中构建模拟UI交互的功能,以便针对副作用进行验证。3-您可以添加断言,然后手动执行它。4-您可以提交雷达请求功能。;)