我在运行androidTest时遇到问题。它找不到我的测试。奇怪的是,它只是某个模块的情况。我将测试放入并配置其build.gradle文件的其他模块正在运行。这是一些信息。非常感谢任何帮助!
输出如下:
Running tests
$ adb shell am instrument -w -r -e debug false -e class my.package.MainActivityTest my.package.module.test/android.support.test.runner.AndroidJUnitRunner
Client not ready yet..
Started running tests
Test running failed: Unable to find instrumentation info for: ComponentInfo{my.package.test/android.support.test.runner.AndroidJUnitRunner}
Empty test suite.
测试位于
下 myModule/src/androidTest/java/my/package/MainActivityTest.java
,如下所示:
@LargeTest
@RunWith(AndroidJUnit4.class)
public class MainActivityTest {
@Rule
public ActivityTestRule<MainActivity> mActivityTestRule = new ActivityTestRule<>(MainActivity.class);
@Test
public void thisTestIsntExecuted() {
assertEquals(1, 2);
}
}
模块build.gradle文件具有以下设置:
android {
defaultConfig {
(...)
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
}
dependencies {
(...)
testImplementation "junit:junit:4.12"
androidTestImplementation "com.android.support.test.espresso:espresso-core:3.0.1"
androidTestImplementation "com.android.support.test:runner:1.0.1"
}
设备上的仪表运行器:
instrumentation:my.package.test/android.support.test.runner.AndroidJUnitRunner (target=my.package.module)
//编辑:我仔细查看了设备上的run命令和instrumentation runner的输出。我忘了在两个地方添加.module
。
答案 0 :(得分:2)
我发现要解决问题。如上面的评论所述,我可以使用以下命令手动启动我的测试:
adb shell am instrument -w -r -e debug false -e class my.package.module.MainActivityTest my.package.test/android.support.test.runner.AndroidJUnitRunner
Android Studio为我创建的运行配置执行命令:
adb shell am instrument -w -r -e debug false -e class my.package.module.MainActivityTest my.package.module.test/android.support.test.runner.AndroidJUnitRunner
因为你可以看到路径错误,module
部分太多了。
此路径为testApplicationId
,可以通过gradle see here进行更改。如果未设置,则会通过applicationId
自动创建该值,并为其添加.test
。这导致了我的错误路径,可能是因为我正在基于构建变体生成applicationId。
不要忘记同步和清理。