【问题标题】:How to execute a designated test in Firebase Test Lab如何在 Firebase 测试实验室中执行指定测试
【发布时间】:2019-04-19 09:42:01
【问题描述】:

我想使用 gcloud firebase test android run 从一个测试套件运行一项测试,但我不知道语法。

此命令失败:

gcloud firebase test android run \
--type instrumentation \
--project locuslabs-android-sdk \
--app app/build/outputs/apk/debug/app-debug.apk \
--test app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk \
--device model=Pixel2,version=27,locale=en_US,orientation=portrait \
--verbosity debug \
--test-targets "class com.example.firebasetestlabplayground.ExampleInstrumentedTest.test002"

错误信息:

java.lang.ClassNotFoundException: com.example.firebasetestlabplayground.ExampleInstrumentedTest.test002
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:453)
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 android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:2075)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.firebasetestlabplayground.ExampleInstrumentedTest.test002" on path: DexPathList[[zip file "/system/framework/android.test.runner.jar", zip file "/system/framework/android.test.mock.jar", zip file "/data/app/com.example.firebasetestlabplayground.test-F71g9fZiJ95s1aLuzIJRsw==/base.apk", zip file "/data/app/com.example.firebasetestlabplayground-EuQG5YDD3hrz6BPtBz2t6g==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.firebasetestlabplayground.test-F71g9fZiJ95s1aLuzIJRsw==/lib/x86, /data/app/com.example.firebasetestlabplayground-EuQG5YDD3hrz6BPtBz2t6g==/lib/x86, /system/lib, /system/vendor/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:125)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
... 8 more

在我的研究中,我遇到了How to execute a designated test suite class in Firebase Test Lab,这对我走到这一步很有帮助,但它没有指定如何在套件中运行单个测试。

另外,根据https://github.com/piotrmadry/FirebaseTestLab-Android/issues/11,应该可以使用--test-targets 参数运行单个测试,但文档在https://cloud.google.com/sdk/gcloud/reference/firebase/test/android/run#--test-targets 没有给出示例。

【问题讨论】:

    标签: firebase firebase-test-lab


    【解决方案1】:

    经过反复试验,我发现我可以通过在测试套件类名称和测试名称之间使用 # 而不是 . 来指定单个测试。

    此命令在com.example.firebasetestlabplayground.ExampleInstrumentedTest 中成功运行了一个名为test002 的测试:

    gcloud firebase test android run \
    --type instrumentation \
    --project locuslabs-android-sdk \
    --app app/build/outputs/apk/debug/app-debug.apk \
    --test app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk \
    --device model=Pixel2,version=27,locale=en_US,orientation=portrait \
    --verbosity debug \
    --test-targets "class com.example.firebasetestlabplayground.ExampleInstrumentedTest#test002"
    

    【讨论】:

      【解决方案2】:

      Michael,gcloud command reference 中记录了使用 # 的语法(或在上面的命令中添加 --help 以从命令行获取文档)。该 gcloud 文档又链接到 AndroidJUnitRunner 的完整文档,该文档还描述了完整的语法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多