【问题标题】:What is Android Test Orchestrator?什么是 Android 测试编排器?
【发布时间】:2017-09-01 02:58:27
【问题描述】:

Google 最近发布了 Android 测试支持库 1.0。看了overview之后,我对Android Test Orchestrator有点困惑。

它说

通常,AndroidJUnitRunner 在同一个检测进程中运行所有测试,这可能会导致许多问题。

您能解释一下使用相同的检测过程会导致哪些类型的问题吗?

如果一个测试崩溃,它会阻止测试套件的其余部分运行

根据我的经验,一个测试崩溃不会阻止其他测试用例的运行。请指出我在这里误解了什么?

来自Android Testing Orchestrator developer guide

为了完整起见,Android Test Orchestrator 在每次测试后运行 pm clear。

所以 Android Test Orchestrator 会在每次测试后运行 pm clear [test_package_name],对吗?

通过我的测试,pm clear [app_package_name] 不会在每次测试后执行。这意味着被测应用程序的数据不会被清除。所以测试用例可能仍然相互依赖。例如:

  • 测试用例 A 存储 SharedPreference 键值
  • 在测试用例A之后运行的测试用例B可以读出测试用例A存储的值

总的来说,经过一些试验,我没有发现 Android Test Orchestrator 有任何优势。有人可以帮助解决我的困惑吗?谢谢。

【问题讨论】:

    标签: android testing android-espresso


    【解决方案1】:

    在研究了一下这个问题后,我可以提供以下答案:

    通常,AndroidJUnitRunner 在同一个检测进程中运行所有测试,这可能会导致许多问题。

    如前所述,AndroidJUnitRunner 在同一个检测进程上运行,因此基本上您的测试是在全状态运行的,如果您的测试对进程状态有某种依赖性,这可能会造成严重破坏。在 Android 测试编排器中,每个测试都在自己的进程中运行,因此依赖关系不是问题。

    如果一个测试崩溃,它会阻止测试套件的其余部分运行

    这里的崩溃是进程的崩溃,而不是活动/应用程序的崩溃。您可以通过在其中插入一个测试来测试它System.exit(0); 通常,这将停止整个测试运行,而在 Android 测试编排器中,测试会按预期继续。

    为了完整起见,Android Test Orchestrator 在每次测试后运行 pm clear。

    这是 google 的疏忽,已从 official documentation 撤回,可以看到 here

    基本上,使用 Android 测试编排器的优势在于每个测试的独立进程,这提高了稳定性并确保测试的完整执行。

    【讨论】:

    • FWIW,您可以让编排器在每次测试后运行 pm clear,方法是在 defaultConfig 部分中添加模块 gradle 文件:testInstrumentationRunnerArguments clearPackageData: 'true'
    • 感谢分享谷歌群组链接。从那里我到达了谷歌的问题跟踪器,这个问题在此处提交 issuetracker.google.com/issues/119833159 根据 2018 年 11 月 21 日
    【解决方案2】:

    Android Test Orchestrator 是一个工具,可让您在自己的 Instrumentation 调用中运行应用的每个测试。 这意味着每个测试(使用 @Test 注释的方法)都将在单独的 AndroidJUnitRunner 实例上运行。

    它解决了什么问题? 在处理 UI 测试时,我们发现了在 CI 或本地运行时不时出现的 2 个主要问题:

    1. 偶尔的崩溃会停止整个测试套件。
    2. 测试重叠。

    【讨论】:

      【解决方案3】:

      Orchestrator 可以防止崩溃中断整个测试,例如。本机崩溃。 但它可能会减慢测试速度

      【讨论】:

        猜你喜欢
        • 2017-10-27
        • 1970-01-01
        • 1970-01-01
        • 2012-05-24
        • 1970-01-01
        • 2021-03-31
        • 2010-12-11
        • 2020-11-19
        • 1970-01-01
        相关资源
        最近更新 更多