Firebase VDT 不 运行 Gherkin (Cucumber) 测试

Firebase VDT does not run Gherkin (Cucumber) tests

我正在 运行使用 VDT 进行集成测试。 我构建了两个 APK,然后按照此处引用的教程发送它们:https://firebase.google.com/docs/test-lab/android/continuous for Bitrise。

Firebase 成功地 运行 进行了我的非 Cucumber 测试,但它只是忽略了 Cucumber 测试。

当我在我的设备上安装 APK 时,我看到了所有测试 运行ning。 我检查了一下,APK 中的 运行ner 设置为 MultiDexCucumberJUnitRunner

要了解 androidTest apk 中使用的 运行ner,我这样做了:

  1. 安装我发送到 Firebase 的 APK
  2. 运行 adb shell pm list instrumentation

然后我看到了一行: instrumentation:my.package.name.test/.MultiDexCucumberJUnitRunner (target=my.package.name)

这是我集成到应用程序中的 MultiDexCucumberJUnit运行ner: https://gist.github.com/dhoskins/98afa6976c87cb20328d42065c7292ee

您知道我如何调查为什么测试没有 运行ning 吗?你也遇到过这个问题吗?

编辑 现在我知道我可以让它在关闭 Orchestrator 后正常工作。有没有办法使用 Orchestrator 运行 Cucumber 测试?

当 Orchestrator 开启时,这是测试的结果:

INSTRUMENTATION_STATUS: numtests=1 INSTRUMENTATION_STATUS: stream= no tests found: INSTRUMENTATION_STATUS: id=AndroidJUnitRunner INSTRUMENTATION_STATUS: test= INSTRUMENTATION_STATUS: class=no tests found INSTRUMENTATION_STATUS: current=1 INSTRUMENTATION_STATUS_CODE: 1 INSTRUMENTATION_STATUS: numtests=1 INSTRUMENTATION_STATUS: stream= Error in no tests found: java.lang.ClassNotFoundException: Invalid name: no tests found at java.lang.Class.classForName(Native Method) at java.lang.Class.forName(Class.java:400) at android.support.test.internal.runner.TestLoader.doCreateRunner(TestLoader.java:72) at android.support.test.internal.runner.TestLoader.getRunnersFor(TestLoader.java:104) at android.support.test.internal.runner.TestRequestBuilder.build(TestRequestBuilder.java:789) at android.support.test.runner.AndroidJUnitRunner.buildRequest(AndroidJUnitRunner.java:539) at android.support.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:382) at my.package.name..app4test.test.MultiDexCucumberJUnitRunner.onStart(MultiDexCucumberJUnitRunner.kt:25) at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1932)

似乎为 android 黄瓜版本 4.2.4 添加了对 Orchestrator 的支持。您可以尝试从库中集成 CucumberAndroidJUnitRunner 而不是从要点中集成 MultiDexCucumberJUnitRunner

如果您的项目还不是 AndroidX,请将 androidx.test.runner.AndroidJUnitRunner 更改为 android.support.test.runner.AndroidJUnitRunner 它们应该具有相同的实现。