我正在制作macOS单元测试包(服务器软件的集成测试):
xcodebuild -project MyApp.xcodeproj -scheme MyApp.macOS build-for-testing
结果,xcodebuild生成xctest bundle MyAppTests.xctest
和xctestrun文件MyApp.xctestrun
。
现在我可以在CI服务器上部署xctest bundle并执行集成测试(默认情况下,目标是发布候选版本的服务器软件)。
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文件中的其他设置(或覆盖现有设置)?
谢谢!
不确定它是否能解决您的目的,但如果我们想在目标的Build设置中覆盖类似用户定义值的内容,我在使用xctestRun运行测试时没有找到直接改变它的方法。因此,我尝试直接更改在测试执行之前使用“build-for-testing”选项创建的xctest包中可用的info.plist,并且事情似乎运行良好。
例如。我想在不同的分区上运行测试,所以我做到了
defaults write <plist_file_location> PARTITION B1
这似乎可以解决问题
注意:确保<plist_file_location>
是绝对路径。提供相对路径最终会在~/Library/Preferences/Info.plist
中创建一个条目