使用xcodebuild将参数传递给iOS测试

lzm*_*lzm 6 xcodebuild

我想通过命令行(xcodebuild)将命令行参数传递给我的iOS测试。我正在XCode上寻找此设置的等效项:

争论

仅将参数传递给xcodebuild不起作用,例如:

xcodebuild -verbose test -workspace theworkspace.xcworkspace -scheme 'thescheme' -destination 'platform=iOS Simulator,name=iPhone 7' --argument=value
Run Code Online (Sandbox Code Playgroud)

这个问题类似于iOS上应用程序的xcodebuild传递参数,但是对该问题的解决方案并不令人满意。

Gri*_*tin 10

它是关于传递环境变量而不是命令行参数,但看起来 Xcode 13 中的 xcodebuild 有可能支持它。来自发行说明

\n
\n

xcodebuild 现在支持传递某些环境变量来测试运行程序进程。在调用 xcodebuild 的环境中,为任何变量添加 TEST_RUNNER_ 前缀,以将该变量(去掉前缀)传递给 XCTest 测试运行程序进程。例如,运行 env TEST_RUNNER_Foo=Bar xcodebuild test ... 会导致在 test runner\xe2\x80\x99s 环境中设置环境变量 Foo=Bar。(74104870)

\n
\n


Man*_*ear 2

我没能找到“简单”的解决方案。因此,我将测试分为 3 个步骤:
1. 运行xcodebuild build-for-testing. 它将xctestrun在派生数据中生成文件,其中包含启动参数列表
2. 在此处添加您想要的启动参数
3. 运行xcodebuild test-without-building -xctestrun <%path_to_file_here%>

我为它写了脚本。它仍然需要一些改进,所以稍后我将分享它的最终形式。

编辑:从来没有时间更新脚本。所以这里是丑陋的版本,适合我们的需要。 https://gist.github.com/ManWithBear/57cbabc8dcd0193d156c376d2d23ff02