从命令行进行android测试->找不到类

时间:2019-04-17 13:21:08

标签: android android-gradle

我试图像这样从命令行运行android测试:

./gradlew -Pandroid.testInstrumentationRunnerArguments.class=com.my-app.MyAndroidTestClass connectedDebugAndroidTest

当我在终端中执行此操作时,我得到一条消息,即构建不成功,并且该堆栈跟踪在报告中:

java.lang.ClassNotFoundException: com.my-app.MyAndroidTestClass
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:453)
at androidx.test.internal.runner.TestLoader.doCreateRunner(TestLoader.java:72)
at androidx.test.internal.runner.TestLoader.getRunnersFor(TestLoader.java:104)
at androidx.test.internal.runner.TestRequestBuilder.build(TestRequestBuilder.java:789)
at androidx.test.runner.AndroidJUnitRunner.buildRequest(AndroidJUnitRunner.java:543)
at androidx.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:386)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:2145)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.my-app.MyAndroidTestClass" on path: DexPathList[[zip file "/system/framework/android.test.mock.jar", zip file "/system/framework/android.test.runner.jar", zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file "/data/app/com.xxxxx.xxxxx.test-yNK7q-kp71fIx71z7ZeJUg==/base.apk"],nativeLibraryDirectories=[/data/app/com.xxxxx.xxxxx.test-yNK7q-kp71fIx71z7ZeJUg==/lib/x86, /data/app/com.xxxxx.xxxxx.test-yNK7q-kp71fIx71z7ZeJUg==/base.apk!/lib/x86, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
... 8 more

奇怪的是,我可以从Android Studio运行测试类。
我想念什么?

2 个答案:

答案 0 :(得分:0)

手动运行测试时,在Android Studio的“构建和运行”窗口中,我可以看到Gradle任务和已执行的adb shell命令。
然后我只需要将它们复制到自己的bash脚本中即可。

答案 1 :(得分:-1)

所有构建目标(包括测试)都在gradle构建系统中定义为任务。 使用命令获取任务列表。

./gradlew tasks

然后使用命令运行特定任务

./gradlew task-name

为测试运行此命令

./gradlew connectedDebugAndroidTest