如何禁用 Xcode UI 测试的沙箱

Unc*_*mon 3 macos xcode sandbox

对于我的 macOS 桌面应用程序的 UI 测试目标,我需要能够运行命令行工具(特别是 git)来验证某些应用程序操作,但我收到一条错误,指出它无法在应用程序沙箱中运行。

我从未明确为我的应用程序或测试目标启用沙箱,因此我无法弄清楚如何将其关闭。没有权利文件,并且我找不到任何似乎与沙箱相关的目标设置。

那么是否可以禁用 UI 测试目标的沙箱呢?我知道解决方法可能包括将 git 复制到捆绑包中,或者让用户明确选择该工具,但这些似乎都不是真正理想的。

更新:我尝试将 git 复制到测试包中以从那里运行,但仍然遇到相同的错误。

更新 2:您可以关闭测试的沙箱,但 Xcode 自动构建的测试运行程序仍然是沙箱的(并且无法加载未签名的包),并且 AFAICT 无法更改运行程序的构建方式。我错了吗?

小智 7

创建 .entitlements 文件

<key>com.apple.security.app-sandbox</key> <false/>

并为您的 UI 测试包指定 CODE_SIGN_ENTITLMENTS(通过 xcconfig 或构建设置 -> 签名)。Xcode 将使用此权利的值来测试运行程序应用程序。