如何在Firebase测试实验室中执行指定的测试

时间:2019-04-19 09:42:01

标签: firebase firebase-test-lab

我想使用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的示例。

2 个答案:

答案 0 :(得分:0)

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

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

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"

答案 1 :(得分:0)

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