如何在 Firebase 测试实验室中执行指定的测试套件 class
How to execute a designated test suite class in Firebase Test Lab
我有一个像这样的浓缩咖啡测试套件class
package instrumentedtest;
import org.junit.ClassRule;
import org.junit.rules.ExternalResource;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@RunWith(Suite.class)
@Suite.SuiteClasses({
Test1.class,
Test2.class,
Test3.class
})
public class POSRuleSuite {
@ClassRule
public static ExternalResource testRule = new ExternalResource() {
@Override
protected void before() throws Throwable {
System.out.println("Testing starts.........");
}
@Override
protected void after() {
System.out.println("Testing ends.........");
}
};
}
我在 Android Studio 中使用此套件 class 设置了 Firebase 测试。我从 Android Studio 启动了这个 firebase 测试,它确实有效。
但是当我使用 Gcloud 命令从命令行启动它时,我无法执行测试。
gcloud firebase test android run ^
--type instrumentation ^
--app POS.apk ^
--test POS-debug-androidTest.apk ^
--test-runner-class=org.junit.runners.Suite ^
--test-targets=instrumentedtest.POSRuleSuite ^
--device model=Nexus10,version=22,locale=en,orientation=landscape ^
--timeout 300s
这是输出
Uploading [POS.apk] to Firebase Test Lab...
Uploading [POS-debug-androidTest.apk] to Firebase Test Lab...
Raw results will be stored in your GCS bucket at [https://console.developers.google.com/storage/browser/test-lab-j9zwyqscmy0rw-k53tazzivjxvu/2017-10-19_14:25:20.055000_jPmA/]
ERROR: (gcloud.firebase.test.android.run) Http error while creating test matrix: ResponseError 400: Invalid test target for instrumentation test: instrumentedtest.POSRuleSuite
C:\git\POS>
有谁知道如何让它工作?
感谢任何帮助。
我找到了原因,我们必须告知 test-targets 的类型。在这种情况下,类型是 class。所以那一行应该是这样的。
--test-targets="class instrumentedtest.POSRuleSuite"
您还可以传递一个字符串列表,其中包含您的所有目标,以逗号分隔,例如:
--test-targets="class instrumentedtest.POSRuleSuite,class instrumentedtest.AnotherRuleSuite"
这里是完整的请求。
gcloud firebase test android run ^
--type instrumentation ^
--app POS.apk ^
--test POS-debug-androidTest.apk ^
--test-targets="class instrumentedtest.POSRuleSuite" ^
--device model=Nexus10,version=22,locale=en,orientation=landscape ^
--timeout 300s
我有一个像这样的浓缩咖啡测试套件class
package instrumentedtest;
import org.junit.ClassRule;
import org.junit.rules.ExternalResource;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@RunWith(Suite.class)
@Suite.SuiteClasses({
Test1.class,
Test2.class,
Test3.class
})
public class POSRuleSuite {
@ClassRule
public static ExternalResource testRule = new ExternalResource() {
@Override
protected void before() throws Throwable {
System.out.println("Testing starts.........");
}
@Override
protected void after() {
System.out.println("Testing ends.........");
}
};
}
我在 Android Studio 中使用此套件 class 设置了 Firebase 测试。我从 Android Studio 启动了这个 firebase 测试,它确实有效。
但是当我使用 Gcloud 命令从命令行启动它时,我无法执行测试。
gcloud firebase test android run ^
--type instrumentation ^
--app POS.apk ^
--test POS-debug-androidTest.apk ^
--test-runner-class=org.junit.runners.Suite ^
--test-targets=instrumentedtest.POSRuleSuite ^
--device model=Nexus10,version=22,locale=en,orientation=landscape ^
--timeout 300s
这是输出
Uploading [POS.apk] to Firebase Test Lab...
Uploading [POS-debug-androidTest.apk] to Firebase Test Lab...
Raw results will be stored in your GCS bucket at [https://console.developers.google.com/storage/browser/test-lab-j9zwyqscmy0rw-k53tazzivjxvu/2017-10-19_14:25:20.055000_jPmA/]
ERROR: (gcloud.firebase.test.android.run) Http error while creating test matrix: ResponseError 400: Invalid test target for instrumentation test: instrumentedtest.POSRuleSuite
C:\git\POS>
有谁知道如何让它工作?
感谢任何帮助。
我找到了原因,我们必须告知 test-targets 的类型。在这种情况下,类型是 class。所以那一行应该是这样的。
--test-targets="class instrumentedtest.POSRuleSuite"
您还可以传递一个字符串列表,其中包含您的所有目标,以逗号分隔,例如:
--test-targets="class instrumentedtest.POSRuleSuite,class instrumentedtest.AnotherRuleSuite"
这里是完整的请求。
gcloud firebase test android run ^
--type instrumentation ^
--app POS.apk ^
--test POS-debug-androidTest.apk ^
--test-targets="class instrumentedtest.POSRuleSuite" ^
--device model=Nexus10,version=22,locale=en,orientation=landscape ^
--timeout 300s