gpt4 book ai didi

ios - 具有代码覆盖率的 UIAutomation

转载 作者:可可西里 更新时间:2023-11-01 03:33:55 24 4
gpt4 key购买 nike

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

但是,在创建 UIAutomation 作业时,我卡住了。测试运行成功(从命令行调用 instruments)。生成 junit 报告很棘手但可能。问题是在运行 UIAutomation 时,没有生成代码覆盖率文件。

是否有可能生成它们?如果不是,能否解释一下原因?

到目前为止我尝试了什么:

  1. 将 UIAutomation 附加到已在 iOS 模拟器上运行的应用程序。
    • 这似乎是不可能的。正在运行的应用程序被仪器终止并重新启动新实例,或者打印一条神秘的错误消息。
  2. 结合使用 osascript 和 UIAHost,在 js 脚本结束时退出模拟器。 performTaskWithPathArgumentsTimeout
    • 应用程序正常结束,但未生成覆盖率。

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

最佳答案

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

首先将“Generate Test Coverage Files”和“Instrument Program Flow”build设置设置为"is"。每次您在模拟器中运行应用程序并退出应用程序时,都会生成代码覆盖率文件。在您的 Info.plist 文件中添加 UIApplicationExitsOnSuspend 并将此选项设置为"is"。运行 UI 自动化测试,在测试结束时,您可以通过手动按下模拟器中的主页按钮或使用 UIATarget.localTarget().deactivateAppForDuration() 方法退出应用程序。请注意,如果您的应用有任何依赖于 deactivateAppForDuration() 方法的 UI 自动化测试,测试将在运行该命令时终止。

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

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

有了它,您可以设置 Jenkins cobertura 插件以根据需要显示信息。

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

关于ios - 具有代码覆盖率的 UIAutomation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13453715/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com