无法在某些模块中运行androidTest

时间:2018-01-12 16:19:26

标签: 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);
    }
}

模块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

1 个答案:

答案 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。

不要忘记同步和清理。