# 測試
測試 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