如何在 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 之间共享数据?的主要内容,如果未能解决你的问题,请参考以下文章
Xcode 7 中的 UITest:如何测试键盘布局(keyboardType)