31

对此还没有约定,但是既然Android 测试基础页面上的说明有所不同,我该如何构建 Android Studio 的测试目录呢?

特别是,有关如何在 Android Studio 上启动和运行 jUnit 测试的任何指示都会有所帮助,谢谢。

此外,android现在使用该工具并没有真正的帮助,因为 Android Studio 的情况有些不同。

更新:

我尝试设置测试文件夹并运行它,但我得到的只是以下内容:

Running tests
Test running startedTest running failed: Unable to find instrumentation info for:ComponentInfo{<project-package-name>/android.test.InstrumentationTestRunner}
Empty test suite.

我还尝试在其中添加一个标准的 AndroidManifest.xml 文件进行测试。

4

4 回答 4

59

更新

从 Build Tools 19.1.0开始,构建插件0.11.0 build.gradle 文件需要将testPackageName重命名为testApplicationIdpackageName也应该重命名为androidId

从构建插件 0.9.0 开始,instrumentTest文件夹重命名为androidTest。这就是我们测试所需的全部内容。

这是 0.11.+ DSL 的示例

android {
    compileSdkVersion 19
    buildToolsVersion "19.1.0"

    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
        androidId "org.homelab.lab"
        testApplicationId "org.homelab.lab.test"
        testInstrumentationRunner "org.homelab.lab.test.Runner"
    }

    ...
}

GOTCHAS:如果您的构建文件包含testPackageNametestInstrumentationRunner的定义,请删除它们

对于版本 0.5.0 - 0.8.+

Android Studio 使用 Gradle 插件版本 0.5.+,它遵循 Gradle SourceDir 原则。

Android Studio 项目结构

如何使其工作: 1.更新
SDK 2.安装
或更新 Gradle 到 1.6(报告 1.7 的问题)或坚持使用 gradle 包装器
3.不要使用 Android Studio 运行检测任务,使用 gradle 命令

gradle connectedCheck

4.不要使用相同的包进行测试和主apk
5.使用浏览器检查结果

<project>/build/reports/instrumentTests/index.html

陷阱:
如果测试包和主包相同,则可能会创建空的TestSuite。结果具有误导性,因为 Gradle 没有报告任何问题,但报告显示没有测试任何类。

编辑:

下面是 build.gradle 的一部分,它配置了 0.9.0 之前所需的仪器测试:

android {
    compileSdkVersion 14
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 17
        testPackageName "org.homelab.lab.test"
        testInstrumentationRunner "org.homelab.lab.test.Runner"
    }

    ...
}

示例项目https://github.com/swavkulinski/android-studio-instrumentation-test

于 2013-05-22T15:47:58.060 回答
1

现在在 Android Studio 中,您只需按照将测试放置在 instrumentDirectory 中的约定来设置 InstrumentTests。Gradle 只需要知道您拥有的任何依赖项,在我的例子中是 Robotium:

Android Studio 截图

dependencies {
    androidTestCompile 'com.jayway.android.robotium:robotium-solo:5.0.+'
}

测试完成后,您将在 GUI 中显示结果,因此您根本不必使用任何命令行!您也可以右键单击 JUnit 测试上方的模块来运行所有 JUnit 测试。

于 2014-03-03T18:56:28.313 回答
1

我也遇到了这个问题。AndroidStudio 只是在设备上构建和安装主应用程序 APK,测试失败并显示以下消息:

测试运行开始测试运行失败:找不到仪器信息:ComponentInfo{com.example.app.test/android.test.InstrumentationTestRunner}

空的测试套件。

然而,运行connectedCheckGradle 目标会生成并安装两个 APK 并成功执行仪器测试。installDebugAndroidTest事实证明,您可以要求 Gradle 通过运行目标来单独组装和安装检测 APK 。运行此目标后,AndroidStudio 能够正常运行仪器测试,甚至能够附加调试器!我猜您每次更改测试本身时都需要刷新检测 APK,否则不需要。

可以通过运行列出安装在设备上的 Instrumentation APK: adb shell pm list instrumentation

于 2015-11-14T04:02:35.503 回答
0

我有另一种方法来解决这个问题,如果你的原因只是运行配置的问题。

检查你的运行配置,如果你的项目的配置是 Android Tests 而不是 Android Application 那么你将面临

"Running tests
Test running startedTest running failed: Unable to find instrumentation info for:ComponentInfo{<project-package-name>/android.test.InstrumentationTestRunner}
Empty test suite."

所以删除Android测试配置并为你的peoject添加一个Android应用程序运行配置,你可以运行它。

于 2013-07-16T08:50:30.390 回答