如何在Android Studio中构建项目测试目录?

时间:2013-05-22 01:48:43

标签: android gradle android-studio

目前还没有惯例,但是如何构建Android Studio的测试目录,现在Android testing fundamentals页面上的内容有所不同?

特别是,任何关于如何在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 个答案:

答案 0 :(得分:59)

更新

从构建工具 19.1.0 开始,构建插件 0.11.0 build.gradle文件需要将 testPackageName 重命名为 testApplicationId (同样 packageName 应重命名为 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 :如果您的构建文件包含 testPackageName testInstrumentationRunner 的定义,请将其删除

对于0.5.0版本 - 0.8。+

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

Android Studio project structure

如何使其发挥作用:
1.update 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

答案 1 :(得分:1)

现在,在Android Studio中,您可以通过简单地遵循将测试放在instrumentDirectory中的惯例来设置instrumentTests。 Gradle只需要知道你拥有的任何依赖项,在我的例子中是Robotium:

Android Studio Screenshot

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

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

答案 2 :(得分:1)

我也遇到过这个问题。 AndroidStudio仅构建主应用程序APK并将其安装到设备上,并且未通过以下消息进行测试:

  

测试运行startedTest运行失败:无法找到以下内容的检测信息:ComponentInfo {com.example.app.test / android.test.InstrumentationTestRunner}

     

空的测试套件。

然而,运行connectedCheck Gradle目标是生成并安装两个APK并成功执行检测测试。事实证明,您可以通过运行installDebugAndroidTest目标让Gradle单独组装和安装仪器APK。运行此目标后,AndroidStudio能够正常运行检测测试,甚至能够连接调试器!我猜你每次更改测试时都需要刷新仪器APK,但不是这样。

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

答案 3 :(得分:0)

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

检查您的运行配置,如果您的项目配置是Android测试而不是Android应用程序然后您将面临

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

因此,删除Android测试配置并为您的项目添加Android应用程序运行配置,您可以运行它。