gpt4 book ai didi

android - 如何并行运行独立的 Robotium UI 测试?

转载 作者:可可西里 更新时间:2023-11-01 18:47:30 25 4
gpt4 key购买 nike

我正在使用 Jenkins 进行我的 Android 持续集成。我有一些孤立的、独立的 Robotium UI 测试,目前需要 12 分钟才能针对单个模拟器连续运行。谁能推荐一种并行运行它们的好方法,这样只需 6 分钟(或更短时间)?

我知道在多个设备/模拟器上并行运行完整测试套件的各种方法,例如查看Multi-configuration (matrix) job Jenkins Android 模拟器插件部分,Spoon ,或像AppThwack这样的云测试公司.

我知道如何运行测试的特定子集,通过使用 JUnit 注释,或者显然 Spoon 支持类似的功能(参见 my question about it)。

我现在使用 Spoon 来运行我的完整测试套件(主要是为了利用带有屏幕截图的可爱 HTML 输出)。如果有人对拆分我的测试并并行运行它们的最佳方式有提示,那就太好了。

我想我可以通过将测试分成两个单独的 CI 作业来实现这一点,但维护两个单独的作业并合并结果听起来很痛苦。

最佳答案

更新:我添加了another answer我认为它提供了更清晰、更简洁的 Jenkins 配置,并且更直接地基于 Spoon。


我刚刚发现了 Jenkins MultiJob Plugin这允许您在一个阶段内并行运行多个作业。

下面是我的工作,但使用 Fork 执行此操作的方法有点脆弱插入。我使用手动配置的正则表达式来划分测试(这是我尝试使用 Fork 的主要原因——它支持使用正则表达式)。

MultiJob 看起来像这样,在一个阶段有多个下游作业:

multi_job_summary

主要工作配置

这是我的“Android Multi Job”的配置方式:

multi_job_summary_1 multi_job_summary_2

下游作业配置

下面是下游“Android Phase N”作业的配置方式(每个作业使用不同的 android.test.classes 正则表达式):

downstream_config

陷阱

  • Fork 当前无法在 Gradle v1.0.0 上运行,根据 fork 插件 issue #6 .
  • 如果您希望 Fork 正则表达式匹配多个不同的包,您需要用逗号分隔您的正则表达式。这在 Fork 项目中没有很好的记录,但是 their TestClassFilter source向您展示他们如何解释正则表达式。
  • 任何抽象测试类都需要命名为Abstract*,否则 Fork 将尝试将它们作为测试运行,从而造成烦人的失败。他们的TestClassScanner控制这个,issue #5跟踪改变这一点。
  • IIRC,你需要有 Fingerprint Plugin为“聚合下游测试结果”选项安装。如果您没有安装它,您将看到此错误:“此版本未启用指纹识别。测试聚合需要指纹识别。”

限制

  • 测试结果已汇总,但仅使用 JUnit XML 测试报告。这意味着您需要点击进入每个下游作业才能查看漂亮的 HTML 结果。
  • 根据正则表达式手动划分测试既乏味又容易出错。如果您使用这种方法,我建议您仍然每晚/每周执行一次 Jenkins 作业,以便在一个地方运行完整的测试套件,以确保您不会意外丢失任何测试。
  • 这种 MultiJob 方法要求您手动配置每个下游作业,一个用于您要使用的每个从属节点。我们使用 Matrix 作业制作了一个更好的方法原型(prototype),您只需在一个 Jenkins 作业中配置所有内容)。我们将尝试在接下来的几周内将其写下来。

future

我们还原型(prototype)化了一种扩展 Spoon 的方法(输出比 Fork 更漂亮)自动将整个测试套件拆分为 N 个下游作业。我们仍然需要增强它以将所有这些结果聚合回上游作业中的单个 HTML 页面,但不幸的是 a bug in the Jenkins "Copy To Slave" plugin目前正在阻止它工作。

关于android - 如何并行运行独立的 Robotium UI 测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24846332/

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