5 测试

构建的测试应用已经被集成在应用工程里,不需要再创建一个单独的测试工程。

5.1 基础介绍和配置

正如上面讲到的, main sourceSet 的旁边就是 androidTest sourceSet ,默认的路径是 src/androidTest/
从这个 sourceSet 可以构建一个能安装到设备上的测试apk,该 apk 使用 Android 测试框架测试应用。这里包括单元测试、集成测试以及后续的UI自动化测试。
这个测试 sourceSet 不必包含 AndroidManifest.xml 文件,因为它会自动生成。

测试应用有如下值可以配置:

  • testPackageName
  • testInstrumentationRunner
  • testHandleProfiling
  • testFunctionalTest

如前所见,这些可以在 defaultConfig 对象里配置。

  1. android {
  2. defaultConfig {
  3. testPackageName "com.test.foo"
  4. testInstrumentationRunner "android.test.InstrumentationTestRunner"
  5. testHandleProfiling true
  6. testFunctionalTest true
  7. }
  8. }

在测试应用的 manifest 文件中,instrumentation 节点的 targetPackage 属性值会自动的被测试应用的包名填充,即使是通过 defaultConfig 或者 Build Type 对象定义的。这也是 manifest 文件自动生成的一个原因。

此外,sourceSet 也可以配置它自己的依赖。
默认情况下,应用以及它自己的依赖会被添加测试应用的 classpath 中,但是也可以进行扩展

  1. dependencies {
  2. androidTestCompile 'com.google.guava:guava:11.0.2'
  3. }

测试应用通过 assembleTest 任务来构建。它并不依赖 main 的 assemble 任务,并且不能自动调用,需要手动运行。

当前只能同时测试一个 Build Type ,默认是 debug Build Type ,但是也可以被重新配置

  1. android {
  2. ...
  3. testBuildType "staging"
  4. }