XCUITest 将参数传递给测试

问题描述

我有一个可以在各种情况下显示许多弹出窗口的应用程序,我想使用 XCUITest 验证它们的文本。但希望能够毫不费力地为多个文本配置做到这一点。例如,适用于多种语言。

有没有办法通过 .xctestrun 文件或“xcodebuild test-without-building”命令传递参数?以某种方式传递字典,或者我可以在 XCTestCase 开头解析的文件以了解要预测的正确文本值?最好不需要重建项目。

解决方法

找到答案了。 测试主机(和您的 XCTestCase)可以使用 NSProcessInfo.processInfo.environmentNSProcessInfo.processInfo.arguments 查看与测试目标相同的参数。

使用 XCode 中“Test”的方案,您可以添加测试主机本身可以读取的参数和环境变量。测试主机可以通过使用上面提到的进程信息来读取这些。

另一种方法是为您的测试编辑 xctestrun 文件。在其中,您可以将键 CommandLineArguments 添加为流程信息参数的字符串数组,或添加 EnvironmentVariables 作为从键到字符串值的字典。 手动将参数/变量添加到 xctestrun 文件的一种简单方法是首先将它们添加到 XCode 中的测试方案中,查看对 xctestrun 文件的更改,并相应地修改它们。

其他 xctestrun 变量在 https://www.manpagez.com/man/5/xcodebuild.xctestrun/ 中描述