# 测试
测试 multi-flavors 项目非常类似于测试简单的项目。
**androidTest** 的 *sourceSet* 用于定义所有 flavor 共用的测试,但是每一个 flavor 也可以有它特有的测试。
正如前面提到的,每一个 flavor 都会创建自己的测试 sourceSet:
- **android.sourceSets.androidTestFlavor1**位于 `src/androidTestFlavor1/`
- **android.sourceSets.androidTestFlavor2**位于 `src/androidTestFlavor2/`
同样的,它们也可以拥有自己的依赖关系:
~~~
dependencies {
androidTestFlavor1Compile "..."
}
~~~
这些测试可以通过主要的标志性 **deviceCheck** task 或者主要的 **androidTest** task(当 flavor 被使用的时候这个 task 相当于一个标志性 task)来执行。
每个 flavor 也拥有自己的 task 来执行测试:`androidTest<VariantName>`。例如:
- **androidTestFlavor1Debug**
- **androidTestFlavor2Debug**
同样的,每个 variant 版本也会创建对应的测试 APK 构建 task 和 安装或卸载 task:
- **installFlavor1Debug**
- **assembleFlavor1Test**
- **installFlavor1Test**
- **uninstallFlavor1Debug**
- ...
最终的 HTML 报告根据每个 flavor 的报告汇总而成。
下面是测试结果和报告文件的路径,每组第一个是每个 flavor 版本的结果,第二个是汇总结果:
- `build/androidTest-results/flavors/<FlavorName>`
- `build/androidTest-results/all/`
- `build/reports/androidTests/flavors<FlavorName>`
- `build/reports/androidTests/all/`
改变 report 或 results 的输出文件夹都只会改变对应的根目录,构建时仍会创建每个 flavor 的文件夹,并且仍会汇总测试结果以及报告文件。
- 译者序
- 简介
- 新构建系统的目标
- 为什么使用 Gradle?
- 配置要求
- 基础项目
- 构建文件示例
- 项目结构
- 配置项目结构
- 构建任务
- 通用任务
- Java 项目的 Task
- Android Tasks
- 基本的构建定制
- Manifest 属性
- 构建类型
- 签名配置
- 运行 ProGuard
- 清理资源
- 依赖、Library 和多项目
- 包依赖
- 本地包依赖
- 远程包依赖
- 多项目设置
- Library 项目
- 创建 Library 项目
- 普通项目和 Library 项目的区别
- 引用 Library 项目
- Library 项目发布
- 测试
- 单元测试
- 基本知识和配置
- 运行测试
- 测试 Android Library 项目
- 测试报告
- 独立项目
- 多项目报告
- Lint 支持
- 构建 Variants(变种)版本
- 产品定制
- 构建类型+产品定制=构建变种版本
- 产品定制的配置
- 源组件和依赖
- 构建和任务
- 测试
- 多定制的变种版本
- 高级构建的自定义
- 构建选项
- Java 编译选项
- aapt 选项
- dex 选项
- 操作 task
- 构建类型和产物定制的属性引用
- 使用sourceCompatibility 1.7
- 附录
- ApplicationId 与 packageName