如何在 Main Target 和 UITest runner target 之间共享数据?

Posted

技术标签:

【中文标题】如何在 Main Target 和 UITest runner target 之间共享数据?【英文标题】:How can i share data between Main Target and UITest runner target? 【发布时间】:2019-11-15 12:49:44 【问题描述】:

我想在主应用程序目标和 XCUITest 目标之间共享数据。我没有找到任何解决方案。有可能吗?

【问题讨论】:

取决于您的数据如何呈现。 【参考方案1】:

如果您的 UITest 运行器和正在测试的应用程序之间有一个共享容器,您应该能够做到这一点。

见Access App Groups container directory from test runner

【讨论】:

从 Xcode 12.3 开始,向 SIMULATOR_SHARED_RESOURCES_DIRECTORY 写入/读取对我有效。 是的,但这不适用于真实设备。您的 UITest 将失败,因为该目录不存在。【参考方案2】:

UI 测试是黑盒的,因此您无法访问您的代码。

您可以在单元测试中使用 @testable 导入,因此将提供完全访问权限。当您运行 UITests 时,这不起作用,因为在 UITest 期间您的测试类无法访问您的应用程序代码。

请参阅此内容以供参考: How do I access my swift classes from my UI tests?

【讨论】:

【参考方案3】:

就像他们在 cmets 中已经告诉您的那样,这取决于您的数据是如何呈现的。

但通常在你的测试文件中,你应该导入主模块:

import XCTest
@testable import <YOUR_MODULE_NAME>

您的模块名称是您的主要目标的名称。

【讨论】:

以上是关于如何在 Main Target 和 UITest runner target 之间共享数据?的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin.UITest:如何检索设备显示的坐标

如何使用 UITest 和 Swift 3 单击编辑菜单

Xcode 7 中的 UITest:如何测试键盘布局(keyboardType)

XCUITest 从捆绑形式 UITest 目标中读取文件

如何检查 wkwebview 是不是在 UItest 中完成加载

如何在 iOS UItest 中选择本地化的日期选择器项目