android - 无法在某些模块中运行 androidTest

标签 android gradle junit junit4 android-testing

我在运行 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);
    }
}

modules 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)

//编辑:我仔细查看了运行命令的输出和设备上的检测运行器。我忘记在两个地方添加 .module

最佳答案

我发现解决问题了。如上面的评论所述,我可以使用以下命令手动启动测试:

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。

不要忘记同步和清理。

关于android - 无法在某些模块中运行 androidTest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48230164/

相关文章:

java - Gradle 错误 Could not find com.actionbarsherlock :actionbarsherlock:4. 4.0 with Eclipse exported project in Android Studio

android-studio - 将 Android Studio 更新到 v2.0 后的一些 gradle 问题

java - 模拟来自父类的方法以返回模拟数据

java - OnClickListener 不隐式工作。为什么?

android - 如何从 fragment 中获取 Activity 的名称?

android - 多屏ListView中如何给ImageView设置宽度

gradle - 避免类似 Gradle 任务之间的重复?

android - NDK 分辨率结果 : Project settings: Gradle model version=5. 4.1,NDK 版本未知

java - Sonar 扫描仪给出一个名为 "Please provide compiled classes of your project with sonar.java.binaries property"的错误

java - 用于测试我的 API 客户端的 JUnit 测试不工作, "Error: Test Engine with ID ' junit-jupiter' 无法执行测试”