我目前正在自动化我们在 jenkins 上的 iOS 测试。到目前为止,我在运行单元测试、将 OCUnit 转换为 JUnit 以及以 Cobertura 格式生成代码覆盖率方面没有任何问题(很多谷歌搜索,但没有困难的问题)。
但是,在创建 UIAutomation 作业时,我被卡住了。instruments
测试运行成功(从命令行调用)。生成 junit 报告很棘手,但可能。问题是在运行 UIAutomation 时,没有生成代码覆盖率文件。
是否有可能生成它们?如果不是,你能解释一下为什么吗?
到目前为止我尝试了什么:
- 将 UIAutomation 附加到 iOS 模拟器上已经运行的应用程序。
- 这似乎是不可能的。正在运行的应用程序被工具杀死并重新启动新实例或打印出神秘的错误消息。
- 使用 osascript 和
UIAHost. performTaskWithPathArgumentsTimeout
.- 应用程序正常结束,但没有生成覆盖。
编辑
在使用不同的框架进行一些测试后,我意识到退出模拟器是不够的,您必须exit()
从应用程序中显式调用。使用 UI 自动化这有点棘手,但您可以声明一个应用程序方案,例如my-app://exit
并通过 MobileSafari 使用UIAHost.performTaskWithPathArgumentsTimeout
. 将检查这是否足以生成文件。