帮酷LOGO
0 0 评论
  • 显示原文与译文双语对照的内容
文章标签:测试  Prepare  gradle-plugin  Gradle  test  PRE  添加  plugin  
Gradle plugin to add unit testing to android plugin. Prepared for Robolectric.

  • 源代码名称:android-unit-test
  • 源代码网址:http://www.github.com/JCAndKSolutions/android-unit-test
  • android-unit-test源代码文档
  • android-unit-test源代码下载
  • Git URL:
    git://www.github.com/JCAndKSolutions/android-unit-test.git
  • Git Clone代码到本地:
    git clone http://www.github.com/JCAndKSolutions/android-unit-test
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/JCAndKSolutions/android-unit-test
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
  • 单元测试

    Maven CentralBuild StatusCoverage Status

    为android插件添加单元测试的Gradle插件。 为Robolectric准备。

    不推荐使用

    Android插件版本 1.1年以来,在本机支持的单元测试。 这就是为什么我不对这个插件,并且不会进一步维护它,这意味着没有 Bug 修复和增强。 感谢你的持续支持。

    用法

    将插件添加到buildscript的依赖项,如下所示:

    buildscript {
     dependencies {
     repositories {
     mavenCentral()
     }
     classpath 'com.android.tools.build:gradle:1.0.0' classpath 'com.github.jcandksolutions.gradle:android-unit-test:2.1.1' }
    }

    在你声明安卓的插件并配置它之后,应用 android-unit-test 插件英镑。 就像这个:

    apply plugin: 'com.android.application'android {
     ...
    }
    apply plugin: 'android-unit-test'

    添加依赖项插件添加了多个配置。 它为每个构建类型( 调试,。) 添加一个测试配置 testCompile,一个用于在Android扩展中声明的每个版本。 例如:

    testCompile 'junit:junit:4.10'testCompile 'org.robolectric:robolectric:2.4'testDebugCompile 'org.debugonly.dependency'testFreeCompile 'Admob.jar'

    添加测试。插件添加多个源集。 主测试源集 src/test/java,每个版本的源集,每种味道组合的源集。每种味道组合的源集和生成类型。 例如:

    • 主要测试:src/test/java/*Test.java
    • 调试生成类型测试:src/testDebug/java/*Test.java
    • 免费风味测试:src/testFree/java/*Test.java
    • FreeBeta分组的口味( 不同的风味组): src/testFreeBeta/java/*Test.java
    • 免费的&调试生成类型: src/testFreeDebug/java/*Test.java
    • FreeBeta分组风格&调试生成类型: src/testFreeBetaDebug/java/*Test.java

    警告:所有测试都必须以结束,否则插件将不会检测到它们 !

    最好在 android.defaultConfig 部分添加 applicationId。 这是因为 R.java 文件总是在这个包的NAME 下生成的,Robolectric将尝试从这个包的NAME 中读取资源。 如果你为你的口味指定了不同的包 NAME,Robolectric会认为 R.java 类在这个包 NAME。 为了解决这个问题,插件读取主包 NAME 并将它的注入系统属性,这样定制 runner 可以正确初始化 Robolectric。 如果没有指定这个标识,插件将尝试从主 Manifest 读取它。 例如:

    android {
     ...
     defaultConfig {
     applicationId "com.example" }
    }

    对需要Robolectric的测试进行注释 @RunWith(RobolectricTestRunner.class) 或者你使用的自定义 runner。

    运行你的测试:

    • 运行 gradlew test 只运行JUnit测试。
    • 运行 gradlew check 来运行JUnit测试和测试测试。
    • 运行 gradlew testPaidNormalDebug 以运行单个变量测试。

    或者可以选择使用系统属性来选择要运行的测试的子集:

    • -Dtest.single 属性将为所有变量设置包含 Pattern。
    • -DtestPaidNormalDebug 属性将只为特定的变量设置包含 Pattern。

    例如:

    • gradlew test -Dtest.single=NormalTest 将运行所有变体,但只有正常口味的变体才会发现这个测试并运行它。
    • gradlew testPaidNormalDebug -DtestPaidNormalDebug.single=NormalTest 只运行PaidNormalDebug变量,并且只运行测试 NormalTest。
    • gradlew testPaidNormalDebug -Dtest.single=NormalTest 将达到上述的相同。
    • gradlew testPaidNormalDebug -Dtest.single=BetaTest 没有发现任何运行的测试,并传递 0个错误。
    • gradlew test -Dtest.single=NormalTest -DtestPaidNormalDebug.single=PaidTest 将在所有具有它和PaidTest的变体中运行 NormalTest,而仅在PaidNormalDebug变量中运行。

    注意:使用这两个标志中的任何一个将覆盖默认的**/*Test.class,这意味着你的测试不必在 *Test.java 中结束,因此请注意注意 !

    读取结果Gradle分别在 build/test-report/build/test-results/ 中生成报告和结果。 每个变种都有独立的报告。 例如 build/test-report/freebeta/debug/index.html 但是,将有一个合并报告,其中包含 build/test-report/index.html 中的所有测试。

    你可以选择使用插件的扩展来配置一些选项。 例如:

    
    ```groovy
    
    
    apply plugin: 'android-unit-test'
    
    
    
    androidUnitTest {
    
    
     testReleaseBuildType true//Run tests for all the build types including non-debuggable (like the Release build type). Only works for Application projects, not Library projects.
    
    
     downloadDependenciesSources false//Download the sources.jar for the production dependencies. `true` by default.
    
    
     downloadDependenciesJavadoc true//Download the javadoc.jar for the production dependencies. `false` by default.
    
    
     downloadTestDependenciesSources false//Download the sources.jar for the test dependencies. `true` by default.
    
    
     downloadTestDependenciesJavadoc true//Download the javadoc.jar for the test dependencies. `false` by default.
    
    
     sourceSets {//Configures the test source sets.
    
    
     testBeta {//Specifies which source set to modify.
    
    
     java.srcDirs = ["src/testBeta/java"]//Sets the srcDirs for testBeta source files.
    
    
     resources.srcDirs(["src/testBeta/resources"])//Adds to the srcDirs for testBeta resources.
    
    
     }
    
    
     }
    
    
     testTasks {//Configures the test tasks.
    
    
     all {//Configures all the test tasks with the same values.
    
    
     maxParallelForks = 4//Allows to run tests in parallel by specifying how many threads to run tests on.
    
    
     forkEvery = 5//Allow to group a number of tests for each thread to run.
    
    
     minHeapSize = '128m'//Specifies the minHeapSize.
    
    
     maxHeapSize = '1024m'//Specifies the maxHeapSize.
    
    
     jvmArgs = ['-XX:MaxPermSize=256m']//Sets the jvmArgs of the test JVM.
    
    
     jvmArgs '-XX:MaxPermSize=256m'//Adds to the jvmArgs of the test JVM.
    
    
     excludes = 'src/notests/**'//Sets the filter to exclude tests.
    
    
     exclude 'src/notests/**'//Adds a filter to exclude tests.
    
    
     systemProperties = ['test.prop2': 'value2', 'test.prop3': 'value3']//Sets the system properties for the test JVM.
    
    
     systemProperties(['test.prop2': 'value2', 'test.prop3': 'value3'])//Adds several system properties for the test JVM.
    
    
     systemProperty 'test.prop1', 'value1'//Adds one system property for the test JVM.
    
    
     }
    
    
     testFreeBetaDebug {//Configure the specific variant test JVM. Overwrites any values set by the all configuration.
    
    
     debug = true//Marks the test JVM for debugger attaching. This will pause the execution until a debugger is attached.
    
    
     include '**/*Test.class'//Adds a filter to include tests.
    
    
     }
    
    
     }
    
    
    }
    
    
    ```
    
    
    
    

    要求

    • Gradle 2.1或者更高版本。
    • android插件 0.14.0或者更高版本的Gradle。
    • 如果使用 Robolectric,它应该是 2.3或者更高。
    • 使用Gradle构建的Android 应用 或者库。

    正在运行示例应用程序

    要运行示例应用程序,你需要首先安装这个插件的快照版本。 通过简单的指令可以轻松完成这里操作:

    cd/pathToProject
    gradlew install

    安装快照版本后,你可以使用另一个简单命令运行该示例:

    cd/pathToProject/example
    ../gradlew check

    可以看到,该示例是用主项目的gradle包装器运行的。 因此,../ ( Windows 上的.. ) 需要在示例目录中运行包装器。

    包装器应该下载 Gradle 2.2.1. 这个例子依赖于android版本 1.0.0的插件,它也会下载。 finally 示例需要Android平台 21和构建工具 21.1.2. 如果你没有它们,你可以从SDK管理器下载它们,或者你可以修改 build.gradle 文件并使用它。

    与 Android Studio 集成

    有一个Intellij插件与 Android Studio 集成。 按照自述文件中的说明操作。

    感谢



    文章标签:plugin  添加  test  PRE  测试  Gradle  gradle-plugin  Prepare  

    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语