代码之家  ›  专栏  ›  技术社区  ›  tir38

Android:第一次失败后如何停止仪器测试

  •  1
  • tir38  · 技术社区  · 6 年前

    我们有一套Android仪器测试,我们从CL via运行 ./gradlew app:connectedDebugAndroidTest 如果有一个失败的测试,我们基本上必须等待它们全部完成,然后才生成HTML报告。我们希望测试在第一次失败时停止。有没有一个我们可以申请的毕业生标志来实现这一点?我在官方文件里什么也没找到。

    0 回复  |  直到 6 年前
        1
  •  0
  •   Ani Fichadia    5 年前

    我不知道你是否找到了解决办法,但我在考虑,我想出了一个 TestRunner TestRule . 我认为 测试运行程序 不过,这种方法更合适。我不是所使用的伴生对象/静态字段的最大粉丝,但它起作用了。我用一个模拟器测试过它,但没有在多个模拟器上进行分片测试(但我认为它不会在所有模拟器上传播任何失败)。

    自定义测试运行程序

    习俗 测试运行程序 它知道测试失败,并在第一个测试失败后忽略测试。我已经创建了 AndroidJUnit4 功能如下: https://gist.github.com/AniFichadia/0a0aa665dfc554e963d2ab3276247efb#file-skiponfirstfailuretestrunner-kt

    雄蕊 本质上代表 androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner org.robolectric.RobolectricTestRunner .

    上面的实现有一个子类 AndroidJUnit4ClassRunner 并防止测试方法在任何测试失败时运行(通过将其视为被忽略)。如果你需要 Robolectric ,然后是自定义 RobolectricTestRunner 和习俗一样 AndroidJunit4类跑步者 在要点中,你可以使用与 AndroidJUnit4.loadRunner(Class) .

    要使用它,您只需使用运行程序注释您的测试类: @RunWith(SkipOnFirstFailureTestRunner::class) .

    只是要小心如果 雄蕊 内部变化(如用氮气)。

    自定义测试规则

    在第一个测试失败后将跳过测试的测试规则(将其视为已忽略): https://gist.github.com/AniFichadia/0a0aa665dfc554e963d2ab3276247efb#file-skiponfirstfailuretestrule-kt

    您需要将规则添加到测试类中,并且这也可以应用于单元测试类。它记录第一次失败的测试,但我不喜欢这种方法。

    启用 测试运行程序 / 测试规则

    也许你可以用 BuildConfig 启用它的字段。如果测试在CICD上运行,则在非生产性变体中可以设置为true。

    对于 测试运行程序 你需要设置 enabled 类本身的属性。

    对于 测试规则 ,可以使用 启用 构造器中的字段。

    告诉我你的想法。