1. 程式人生 > >Android官方技術文件翻譯——Gradle 外掛使用者指南(5)

Android官方技術文件翻譯——Gradle 外掛使用者指南(5)

昨晚把第五章未譯完的幾句話解決了,不過第六章沒怎麼譯,明後天又是週末,如果週一前第六章翻譯完的話,週一再發第六章。

本文譯自Android官方技術文件《Gradle Plugin User Guide》,原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide。

翻譯不易,轉載請註明CSDN部落格上的出處:

http://blog.csdn.net/maosidiaoxian/article/details/42023609

翻譯工作耗時費神,如果你覺得本文翻譯得還OK,請點選文末的“頂”,我在精神上會倍受鼓勵的,謝謝。翻譯如有錯訛,敬請指正。

測試

構建一個測試應用程式已經整合到應用程式專案中了。所以已經沒有必要再去建立一個單獨的測試專案。

基礎知識和配置

正如前面所提及,在main sourceSet旁邊的是androidTest sourceSet,預設情況下,它位於src /androidTest/
從這裡的 sourceSet 構建出來的是一個測試的apk,它可以部署到裝置上,使用 Android 的測試框架去測試應用程式。它可以包含單元測試、 instrumentation 測試和後來的 uiautomator 測試。這個
SourceSet 不應該包含 AndroidManifest.xml ,因為它是會自動生成的。


下面是可以用來配置測試應用程式的幾個值:
  • testPackageName
  • testInstrumentationRunner
  • testHandleProfiling

  • testFunctionalTest

正如前面所看到的,它們在defaultConfig物件中配置:
android {     defaultConfig {         testPackageName "com.test.foo"         testInstrumentationRunner "android.test.InstrumentationTestRunner"         testHandleProfiling true
testFunctionalTest true     } }
在測試程式裡的manifest裡的instrumentation節點中,targetPackage屬性的值會自動設為被測試的應用程式的包名稱,即使它通過defaultConfigBuild Type物件自定義過。這是manifest 自動生成的原因之一。

此外,sourceSet可以配置自己的依賴。
預設情況下,應用程式和它自己的依賴都會被新增到測試應用程式的classpath中,但是也可以通過以下來擴充套件
dependencies { androidTestCompile 'com.google.guava:guava:11.0.2' }
這個測試程式是由assembleTest任務構建的。它不是main裡的assemble任務的依賴項,當設定測試執行時它不會被自動呼叫。

目前只有一種Build Type會進行測試。預設情況下是debugBuild Type,但它可以被重新配置: 
android {     ...     testBuildType "staging" }

執行測試

正如前面提到的,通過錨任務 connectedCheck執行的檢查,需要一個已連線的裝置 它依賴於任務androidTest,因此將執行 androidTest。該任務執行以下操作:
  • 確保應用程式和測試應用程式都被構建 (依賴於 assembleDebug  assembleTest)
  • 安裝這兩個應用程式
  • 執行測試
  • 解除安裝這兩個應用程式。
如果連線了多個裝置,所有的測試都會並行執行在所有連線的裝置上。如果任何一個裝置的其中一項測試失敗,那麼整個構建都將失敗。

所有測試結果都會儲存為 XML 檔案,路徑為 
build/androidTest-results
(這類似於 jUnit 定期執行的結果儲存在 build/text-result 下面)

它可以通過以下方式來配置 
配置
android {     ...     testOptions {         resultsDir = "$project.buildDir/foo/results"     } }
Android.testOptions.resultsDir的值將通過Project.file(String) 獲得

測試 Android Libraries

測試 Android Library專案與測試應用程式專案的方式完全一樣。

唯一的區別是整個庫 (和它的依賴項) 會自動作為Library依賴新增到測試應用程式中。結果就是測試 APK 不只包含其自己的程式碼,還包括測試庫以及測試庫的所有依賴項。
這個Library的manifest 會合併到測試應用程式的manifest中(如引用此Library的任何專案)。

AndroidTest任務改為僅安裝 (以及解除安裝)測試 APK (因為沒有其他的 APK 要安裝)

其他的都是相同的。

測試報告

當執行單元測試時,Gradle 會輸出 HTML 報告,以方便檢視結果。
Android 外掛在此基礎上擴充套件了 HTML 報告,它聚合了所有連線的裝置的測試結果。

單個專案的報告

這個測試報告的專案會在執行測試時自動生成。它的預設位置是
build/reports/androidTests

它類似於 jUnit 報告的位置build/reports/tests,或其他通常位於build/reports/<plugin>/的報告。

這個位置可以通過以下方式自定義 

android {     ...     testOptions {         reportDir = "$project.buildDir/foo/report"     } }
該報告將聚合在不同的裝置執行的測試。

多專案報告

在一個設定了一個或多個application和 library 專案的多專案中,當同時執行所有的測試,為所有測試生成單個報告可能是非常有用的。

要做到這一點,需要使用同一個檔案中的另一個外掛。這個外掛可以如下配置: 
buildscript {     repositories {         mavenCentral()     }     dependencies {         classpath 'com.android.tools.build:gradle:0.5.6'     } } apply plugin: 'android-reporting'
這個外掛應該在根專案中配置使用,即在 settings.gradle同級目錄的build.gradle中。

然後在根資料夾中,下面的命令就可以執行所有的測試並聚合測試報告: 
gradle deviceCheck mergeAndroidReports --continue

注: --continue選項確保所有子專案的測試都會被執行,即使其中的一個子專案的測試失敗了。如果不加上這個選項,第一個失敗的測試將會中斷所有測試的執行,這可能導致有些專案還沒有執行它們的測試。

Lint 支援

從 0.7.0 版本起,您可以為一個指定的variant或所有的variants 執行lint,在這種情況下,它會生成一個報告,描述每一個給定的問題都存在於哪些指定的variants 。 您可以通過新增以下的一個 lintOptions 節點對lint進行配置。通常,您只需要指定其中的幾個 ;以下列出了所有可用的選項。
android {
    lintOptions {
// 設定為 true時lint將不報告分析的進度         quiet true // 如果為 true,則當lint發現錯誤時停止 gradle構建         abortOnError false // 如果為 true,則只報告錯誤         ignoreWarnings true // 如果為 true,則當有錯誤時會顯示檔案的全路徑或絕對路徑 (預設情況下為true)         //absolutePaths true // 如果為 true,則檢查所有的問題,包括預設不檢查問題         checkAllWarnings true // 如果為 true,則將所有警告視為錯誤         warningsAsErrors true // 不檢查給定的問題id         disable 'TypographyFractions','TypographyQuotes' // 檢查給定的問題 id         enable 'RtlHardcoded','RtlCompat', 'RtlEnabled' // * 僅 * 檢查給定的問題 id         check 'NewApi', 'InlinedApi' // 如果為true,則在錯誤報告的輸出中不包括原始碼行         noLines true // 如果為 true,則對一個錯誤的問題顯示它所在的所有地方,而不會截短列表,等等。         showAll true // 重置 lint 配置(使用預設的嚴重性等設定)。         lintConfig file("default-lint.xml") // 如果為 true,生成一個問題的純文字報告(預設為false)         textReport true // 配置寫入輸出結果的位置;它可以是一個檔案或 “stdout”(標準輸出)         textOutput 'stdout' // 如果為真,會生成一個XML報告,以給Jenkins之類的使用         xmlReport false // 用於寫入報告的檔案(如果不指定,預設為lint-results.xml)         xmlOutput file("lint-report.xml") // 如果為真,會生成一個HTML報告(包括問題的解釋,存在此問題的原始碼,等等)         htmlReport true // 寫入報告的路徑,它是可選的(預設為構建目錄下的 lint-results.html )         htmlOutput file("lint-report.html")
   // 設定為 true, 將使所有release 構建都以issus的嚴重性級別為fatal(severity=false)的設定來執行lint
   // 並且,如果發現了致命(fatal)的問題,將會中止構建(由上面提到的 abortOnError 控制)
   checkReleaseBuilds true
        // 設定給定問題的嚴重級別(severity)為fatal (這意味著他們將會         // 在release構建的期間檢查 (即使 lint 要檢查的問題沒有包含在程式碼中)         fatal 'NewApi', 'InlineApi'         // 設定給定問題的嚴重級別為error         error 'Wakelock', 'TextViewEdits'         // 設定給定問題的嚴重級別為warning         warning 'ResourceAsColor'         // 設定給定問題的嚴重級別(severity)為ignore (和不檢查這個問題一樣)         ignore 'TypographyQuotes'     }
}

相關推薦

Android官方技術翻譯——Gradle 外掛使用者指南5

昨晚把第五章未譯完的幾句話解決了,不過第六章沒怎麼譯,明後天又是週末,如果週一前第六章翻譯完的話,週一再發第六章。 本文譯自Android官方技術文件《Gradle Plugin User Guide》,原文地址:http://tools.android.com/te

Android官方技術翻譯——Gradle 外掛使用者指南7

本文譯自Android官方技術文件《Gradle Plugin User Guide》,原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide。 翻譯不易,轉載請註明CSDN部落格上的出處:

Android官方技術翻譯——Gradle 外掛使用者指南4

最近趕專案,白天基本沒時間,只有晚上在家的時候才能看一看。昨天晚上只翻譯完了第四章,今天就只發第四章吧。 本文譯自Android官方技術文件《Gradle Plugin User Guide》,原文地址:http://tools.android.com/tech-doc

Android官方技術翻譯——Gradle 外掛使用者指南1-3

不知道是什麼網路問題,上午一直髮不了部落格,其他頁面基本正常,就是在寫部落格這裡,每次開啟都是響應超時。剛才用了VPN,順便試了一下,居然可以編輯。想是CDN之類的問題吧。 這次翻譯的是Gradle 外掛使用者指南,也就是Gradle上的Android外掛的官方文件。文件很

Android官方技術翻譯——Gradle 外掛使用者指南

本文譯自Android官方技術文件《Gradle Plugin User Guide》,原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide。 翻譯不易,轉載請註明CSDN部落格上的出處: http://blog.cs

Android官方技術翻譯——Gradle用戶指南4

庫項目 包含 doc 努力 時也 外部 插件 http name 近期趕項目,白天基本沒時間,僅僅有晚上在家的時候才幹看一看。昨天晚上僅僅翻譯完了第四章,今天就僅僅發第四章吧。 本文譯自Android官方技術文檔《Gradle Plugin User Guide》,

Android官方技術翻譯——清單合併

本文譯自Android官方技術文件《Manifest Merger》,原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger。 翻譯不易,轉載請註明CSDN部落格上的出處: htt

android官方技術翻譯——switch 語句轉換

自ADT 14起,庫專案的資源常量不再是final型的。這一點在此文件中有更詳細的說明。 然而,這樣導致的後果之一是,一些已有的老專案,當使用ADT 14後將不再通過編譯。其中的原因可能較難理解。有一個新的 quickfix 檢測器就是為了解決這個問題,它可以尋找一個特定的編譯錯誤,並在存在這樣的錯誤時增加

Android官方技術翻譯——IntelliJ 專案遷移

本文譯自Android官方技術文件《Migrating from IntelliJ Projects》,原文地址:http://tools.android.com/tech-docs/new-build-system/migrating-from-intellij-pro

android官方技術翻譯——Android Lint

$ lint /src/astrid/Scanning GreenDroid-GoogleAPIs: ..Scanning stream: ...Scanning api: ...........................Scanning GDCatalog: ....................

android官方技術翻譯——工具屬性

本文譯自androd官方技術文件《Tools Attributes》:http://tools.android.com/tech-docs/tools-attributes 本文地址:http://blog.csdn.net/maosidiaoxian/article/de

Android官方技術翻譯——開發工具的構建概述

本文譯自Android官方技術文件《Build Overview》,原文地址:http://tools.android.com/build。 因為《Android Lint Checks》這篇太長了,沒譯完,所以這次就發一下《Build Overview》的翻譯好了。 這

android官方技術翻譯——設計時佈局屬性

在 Android Studio 0.2.11 版本中,佈局渲染(用於佈局編輯器以及XML編輯器的佈局預覽視窗),支援 設計時佈局屬性. 這些屬性用於佈局在工具裡渲染時期,但是對執行時沒有任何影響。這一點很有用,比如如果你想在編輯佈局的時候把 示例資料資料放到文字框中,但又不想這些屬性影響到你的應用的

android官方技術翻譯——Case 標籤中的常量欄位

public static final int main=0x7f030004; 然而,到 ADT 14為止,在類庫專案中,他們會被這樣宣告: public static int main=0x7f030004; 換句話說,在庫專案中這些常量都不是final的。原因很簡單:當多個庫專案整合時,欄位的實際值

Solr 6.7學習筆記02-- 配置 managed-schema (schema.xml) - filter5

schema load lis field folding factor 文件 iter tap 自定義fieldType時,通常還會用到filter。filter必須跟在tokenizer或其它filter之後。如: <fieldType> <

Spark2.1.0:Spark Streaming 程式設計指南

本文翻譯自spark官方文件,僅翻譯了Scala API部分,目前版本為2.1.0,如有疏漏錯誤之處請多多指教。 原文地址:http://spark.apache.org/docs/latest/streaming-programming-guide.html 因文件篇幅較

【Unity3D技術翻譯】第1.6篇 使用 AssetBundle Manager

上一章:【Unity3D技術文件翻譯】第1.5篇 使用 AssetBundles 本章原文所在章節:【Unity Manual】→【Working in Unity】→【Advanced Development】→【AssetBundles】→【AssetBundle Manager】 As

Log4j2官方架構翻譯

官網原文標題《Architecture》 翻譯時間:2017-11-14 譯者:本文介紹了log4j的主要構成元件和核心概念,並就每個元件分別進行了講解。尤其需要讀者重點理解的是log level的繼承概念,以及appender的additivity屬性。仔細理解本片

教大家看官方技術- Spring MVC

每當學習一門新技術時候,大部分人直接就是百度Bing搜尋,借鑑別人的部落格例子等。我也是一樣,但是我經常想,這些牛人的例子如何寫出來的,如何深入擴充套件其它功能等等。所以,我會做多一步,就是挖掘官方文件。 本文例子的軟體環境: IntelliJ

[原][譯]JSBSim官方原始碼翻譯google翻譯

/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% CLASS DOCUMENTATION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%