具有代码覆盖率的 UIAutomation

2024-01-05

我目前正在 jenkins 上自动化我们的 iOS 测试。到目前为止,我在运行单元测试、将 OCUnit 转换为 JUnit 以及以 Cobertura 格式生成代码覆盖率方面没有任何问题(大量谷歌搜索,但没有困难的问题)。

但是,在创建 UIAutomation 作业时,我陷入了困境。测试已成功运行(调用instruments从命令行)。生成 junit 报告很棘手,但也是可能的。 问题是运行 UIAutomation 时,不会生成代码覆盖率文件。

有可能生成它们吗?如果没有,您能解释一下原因吗?

到目前为止我尝试过的:

  1. Attaching UIAutomation to an already running application on iOS simulator.
    • 这似乎是不可能的。正在运行的应用程序要么被仪器终止,然后重新启动新实例,要么打印一条神秘的错误消息。
  2. Quit simulator at the end of js script using a combination of osascript and UIAHost. performTaskWithPathArgumentsTimeout.
    • 应用程序正常结束,但没有生成覆盖范围。

Edit使用不同的框架进行一些测试后,我意识到退出模拟器是不够的,你必须明确地调用exit()从应用程序。对于 UI 自动化,这有点棘手,但您可以声明一个应用程序方案,例如my-app://exit并使用 MobileSafari 调用它UIAHost.performTaskWithPathArgumentsTimeout。将检查这是否足以生成文件。


按照这些步骤,我能够从 UI Automation 生成代码覆盖率文件,并通过 cobertura Jenkins 插件显示信息。

首先将“生成测试覆盖率文件”和“仪器程序流程”构建设置设置为“是”。每次在模拟器中运行应用程序并退出应用程序时,这都会生成代码覆盖率文件。在 Info.plist 文件中添加 UIApplicationExitsOnSuspend 并将此选项设置为“YES”。运行 UI 自动化测试,最后您可以通过手动按模拟器中的 HOME 按钮或使用 UIATarget.localTarget().deactivateAppForDuration() 方法退出应用程序。请注意,如果您的应用程序有任何依赖于 deactivateAppForDuration() 方法的 UI 自动化测试,则测试将在运行该命令时终止。

获得 gcda 文件后,您可以通过下载 gcovr 生成 cobertura xml 文件(https://software.sandia.gov/trac/fast/wiki/gcovr https://software.sandia.gov/trac/fast/wiki/gcovr)并运行命令

gcovr -r your_root_directory --object-directory path_to_gcda_files --xml >coverage.xml

这样您就可以设置 Jenkins cobertura 插件来根据需要显示信息。

Source: http://blog.octo.com/en/jenkins-quality-dashboard-ios-development/#step2-2 http://blog.octo.com/en/jenkins-quality-dashboard-ios-development/#step2-2

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有代码覆盖率的 UIAutomation 的相关文章

随机推荐