我正在制作macOS单元测试包(服务器软件的集成测试):
xcodebuild -project MyApp.xcodeproj -scheme MyApp.macOS build-for-testing
结果,xcodebuild生成 xctest 包MyAppTests.xctest
和 xctestrun 文件MyApp.xctestrun
。
现在我可以在CI服务器上部署 xctest 捆绑包并执行集成测试(默认情况下,目标是发布候选版本的服务器软件)。
xcodebuild test-without-building -xctestrun MyApp.xctestrun
现在我想要定位另一个服务器实例(即来自开发分支)
为此,我可以在MyApp-development.xctestrun
密钥下提供另一个 xctestrun 文件TestingEnvironmentVariables
以及其他设置。
<key>TestingEnvironmentVariables</key>
<dict>
<key>com.myapp.ServerKind</key>
<string>development</string>
...
</dict>
在CI服务器上启动:
xcodebuild test-without-building -xctestrun MyApp-development.xctestrun
但保留几个 xctestrun 文件并不是一个好主意。我想拥有default
xctestrun 文件,并从命令行覆盖它的设置。
是否可以从命令行在 xctestrun 文件中传递其他设置(或覆盖现有设置)?
谢谢!
答案 0 :(得分:0)
不确定它是否可以解决您的目的,但是如果我们想在目标的Build设置中覆盖类似User-Defined值的内容,则在使用xctestRun运行测试时,我没有发现直接更改它的方法。因此,我尝试在测试执行之前直接更改通过“ build-for-testing”选项创建的xctest捆绑软件中可用的info.plist,这些东西似乎运行良好。
例如我想在不同的分区上运行测试,所以我做了
defaults write <plist_file_location> PARTITION B1
这似乎可以解决问题
注意:确保<plist_file_location>
是绝对路径。提供相对路径最终将在~/Library/Preferences/Info.plist