【发布时间】:2012-11-19 12:20:29
【问题描述】:
我目前正在 jenkins 上自动化我们的 iOS 测试。到目前为止,我在运行单元测试、将 OCUnit 转换为 JUnit 以及以 Cobertura 格式生成代码覆盖率方面没有遇到任何问题(很多谷歌搜索,但没有遇到困难)。
但是,在创建 UIAutomation 作业时,我被卡住了。测试运行成功(从命令行调用instruments)。生成 junit 报告很棘手,但可能。
问题是在运行 UIAutomation 时,没有生成代码覆盖文件。
是否有可能生成它们?如果不是,您能解释一下原因吗?
到目前为止我尝试了什么:
- 将 UIAutomation 附加到 iOS 模拟器上已运行的应用程序。
- 这似乎是不可能的。正在运行的应用程序被工具杀死并重新启动新实例或打印出神秘的错误消息。
- 使用 osascript 和
UIAHost. performTaskWithPathArgumentsTimeout的组合在 js 脚本末尾退出模拟器。- 应用程序正常结束,但未生成覆盖范围。
编辑
在使用不同的框架进行一些测试后,我意识到退出模拟器是不够的,您必须从应用程序中显式调用 exit()。使用 UI 自动化这有点棘手,但您可以声明一个应用程序方案,例如my-app://exit 并使用 UIAHost.performTaskWithPathArgumentsTimeout 通过 MobileSafari 调用它。将检查这是否足以生成文件。
【问题讨论】:
-
嗨,我知道这可能不是答案:你也可以试试testingwithfrank.com 我测试了我的应用程序的 UI 到 80%。它也很容易阅读,因为它使用了黄瓜
-
@VinhTran 好吧,我可以使用许多不同的框架,包括 OCUnit,但我们选择了 UIAutomation,并且我们已经编写了很多测试。
-
@VinhTran 最后,我已经开始将测试重写给 Frank。它进展缓慢,因为我不是一个 ruby 人,但最大的优点是框架是开放的。我已经修复了一些错误,我可以轻松检查为什么测试不起作用。 Jenkins 集成更容易,CC 生成工作没有问题。
-
我很高兴听到它可以帮助您。真正的劣势只在一开始就可见。但以后好处会很明显。
-
@VinhTran 测试组织立即变得更好(在调试时标记场景/功能的可能性非常好,例如“@record”标记来录制视频)。此外,直接调用 obj-c 方法的可能性有助于我测试我无法使用 UI 自动化测试的东西。到目前为止,最大的问题是 Frank 中的偶尔出现的错误 - 然而,它是开源的,我的一些修复已经合并 :)
标签: ios ios-ui-automation