构建的测试应用已经被集成在应用工程里,不需要再创建一个单独的测试工程。
正如上面讲到的, main sourceSet 的旁边就是 androidTest sourceSet ,默认的路径是 src/androidTest/
从这个 sourceSet 可以构建一个能安装到设备上的测试apk,该 apk 使用 Android 测试框架测试应用。这里包括单元测试、集成测试以及后续的UI自动化测试。
这个测试 sourceSet 不必包含 AndroidManifest.xml
文件,因为它会自动生成。
测试应用有如下值可以配置:
如前所见,这些可以在 defaultConfig 对象里配置。
android {
defaultConfig {
testPackageName "com.test.foo"
testInstrumentationRunner "android.test.InstrumentationTestRunner"
testHandleProfiling true
testFunctionalTest true
}
}
在测试应用的 manifest 文件中,instrumentation 节点的 targetPackage 属性值会自动的被测试应用的包名填充,即使是通过 defaultConfig 或者 Build Type 对象定义的。这也是 manifest 文件自动生成的一个原因。
此外,sourceSet 也可以配置它自己的依赖。 默认情况下,应用以及它自己的依赖会被添加测试应用的 classpath 中,但是也可以进行扩展
dependencies {
androidTestCompile 'com.google.guava:guava:11.0.2'
}
测试应用通过 assembleTest 任务来构建。它并不依赖 main 的 assemble 任务,并且不能自动调用,需要手动运行。
当前只能同时测试一个 Build Type ,默认是 debug Build Type ,但是也可以被重新配置
android {
...
testBuildType "staging"
}