说明

基本原理和配置

正如前面提到的,在main sourceSet下面的就是androidTest sourceSet,默认路径在src/androidTest/下。 从这个测试sourceSet中可以构建出一个使用Android测试框架,并且可以发布到设备上测试应用的测试apk。这里包含了单元测试,集成测试,和后续的UI自动测试。

测试程序manifest中的<instrumentation>结构是自动生成的,但是你可以创建src/androidTest/AndroidManifest.xml文件来增加其他的组件到测试的manifest中。

下面是配置测试程序的一些值,可以在<instrumentation>节点中增加:

  • testPackageName
  • testInstrumentationRunner
  • testHandleProfiling
  • testFunctionalTest

正如前面所看到的,这些配置在defaultConfig 对象中配置:

android {
    defaultConfig {
        testPackageName "com.test.foo"
        testInstrumentationRunner "android.test.InstrumentationTestRunner"
        testHandleProfiling true
        testFunctionalTest true
    }
}

在测试应用程序manifest文件中,instrumentation节点中的testPackageName属性会自动使用测试应用的package名称,即使这个名称已经在defaultConfig 或者是Build Type对象中自定义过。这也是manifest文件自动生成的一个原因。

另外,这个sourceSet也可以配置自己的依赖。 默认情况下,应用程序和它拥有的依赖会被添加到测试应用的classpath中,但是也可以通过下面的方式进行扩展

dependencies {
    androidTestCompile 'com.google.guava:guava:11.0.2'
}

测试应用通过assembleTest task来构建。它不依赖main中的assemble task,不过需要手动来设置它,使它可以自动运行。

目前只有一个Build Type被测试。默认情况是debug Build Type,但是可以通过下面的方式进行重新配置:

android {
    ...
    testBuildType "staging"
}