1

我使用 Xcode 测试计划为我的应用程序设置了一个新的测试目标,以指定用于每个目标的 .xcappdata 文件。我们在 iPad 和 iOS 模拟器中运行测试,在每次测试运行之前从头开始重新创建。

但是,Xcode 从未真正将应用程序数据(例如 com.ourCompany.ourApp.plist 和其他文件)从 .xcappdata 文件复制到 .xcappdata 文件中的模拟器容器的适当目录中~/Library/Developer/CoreSimulator/Devices/SIMULATED_DEVICE_GUID/data/Containers/Data/Applications/OUR_APP'S_CONTAINER_GUID/

因此,我们的测试失败了,例如,生成了一个新的应用程序 .plist,而不是使用来自我们的 .xcappdata 的应用程序,导致 UserDefaults 设置值不符合预期。

难道我做错了什么?我们怎样才能让它真正起作用......?

我发现了多个其他线程,例如四年前在 Apple Dev Forums 上的这个线程,以及 Stack Overflow 上的几个线程,例如这篇文章,表明这个功能至少从 Xcode 6 开始就被破坏了。

但是...他们不是只是将每个目标的 .xcappdata 功能添加为 Xcode 11 中的测试计划的一部分吗?它怎么可能在 Xcode 12.3 中再次被破坏?Apple 不会围绕自己的测试计划功能进行测试吗?

我希望有人能启发我……这是权限问题吗?大苏尔的回归?我是否需要在/Applications/Xcode.app/Contents/Some/Deeply/Nested/Toolchain/usr/binSecurity & Privacy > Privacy > Full Disk Access 中添加一些神秘的可执行文件(隐藏在 中的无数子文件夹中)?

任何帮助将不胜感激......谢谢!

我确实找到了以下解决方法,但似乎都不是很有可扩展性:

  • HOME在测试方案中将环境变量和CFFIXED_USER_HOME环境变量设置为$(SRC_ROOT)/path/to/myData.xcappdata/AppData/(这会导致该文件夹现在成为模拟应用程序的容器目录,从而导致这些文件因测试运行而被修改)作为它们的实际主目录而不是通常的容器位置! )
  • 使用脚本将嵌套在 .xcappdata 中的子文件夹中的文件复制到嵌套在其中的相同子文件夹中~/Library/Developer/CoreSimulator/Devices/SOME-GUID/data/Containers/Data/Applications/ANOTHER-GUID/(当然,由于这些 GUID 是随机的并且在测试时确定,如何编写这样的脚本并让它可靠地工作在 CI 机器 [使用 Fastlane 脚本执行测试] 和本地开发人员机器 [从 Xcode 中执行测试] 上,会很烦人)
4

0 回答 0