美文网首页
安卓-junit5

安卓-junit5

作者: Darren老师 | 来源:发表于2022-07-01 21:41 被阅读0次

    前言

    一个 Gradle 插件,允许使用Android Gradle Plugin 4.0.0 或更高版本在 Android 环境中执行JUnit 5测试。

    如何?

    此插件为项目的每个构建变体配置单元测试任务以在 JUnit 平台上运行。此外,它通过附加到android.testOptions.

    下载

    Kotlin

    buildscript {
      dependencies {
        classpath("de.mannodermaus.gradle.plugins:android-junit5:1.8.2.1")
      }
    }
    

    Groovy

    buildscript {
      dependencies {
        classpath "de.mannodermaus.gradle.plugins:android-junit5:1.8.2.1"
      }
    }
    

    设置

    Kotlin

    plugins {
      id("de.mannodermaus.android-junit5")
    }
    
    dependencies {
      // (Required) Writing and executing Unit Tests on the JUnit Platform
      testImplementation("org.junit.jupiter:junit-jupiter-api:5.8.2")
      testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.8.2")
    
      // (Optional) If you need "Parameterized Tests"
      testImplementation("org.junit.jupiter:junit-jupiter-params:5.8.2")
    
      // (Optional) If you also have JUnit 4-based tests
      testImplementation("junit:junit:4.13.2")
      testRuntimeOnly("org.junit.vintage:junit-vintage-engine:5.8.2")
    }
    

    Groovy

    apply plugin: "de.mannodermaus.android-junit5"
    
    dependencies {
      // (Required) Writing and executing Unit Tests on the JUnit Platform
      testImplementation "org.junit.jupiter:junit-jupiter-api:5.8.2"
      testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:5.8.2"
    
      // (Optional) If you need "Parameterized Tests"
      testImplementation "org.junit.jupiter:junit-jupiter-params:5.8.2"
    
      // (Optional) If you also have JUnit 4-based tests
      testImplementation "junit:junit:4.13.2"
      testRuntimeOnly "org.junit.vintage:junit-vintage-engine:5.8.2"
    }
    

    要求

    此插件的最新版本需要:

    • Android Gradle 插件4.0.0或更高版本
    • Gradle6.1.1或以上

    仪器测试支持

    有对 Android 仪器测试的实验性支持,这需要一些额外的配置和依赖项。此外,由于 JUnit 5 从头开始构建在 Java 8 之上,因此其仪器测试只能在运行 Android 8.0 (API 26) 或更高版本的设备上运行。旧手机将完全跳过这些测试的执行,将它们标记为“忽略”。

    要开始使用 JUnit Jupiter 编写仪器测试,请对模块的构建脚本进行以下更改:

    Kotlin

    android {
      defaultConfig {
        // 1) Make sure to use the AndroidJUnitRunner, or a subclass of it. This requires a dependency on androidx.test:runner, too!
        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
        // 2) Connect JUnit 5 to the runner
        testInstrumentationRunnerArguments["runnerBuilder"] = "de.mannodermaus.junit5.AndroidJUnit5Builder"
      }
    
      // 3) Java 8 is required
      compileOptions {
        setSourceCompatibility(JavaVersion.VERSION_1_8)
        setTargetCompatibility(JavaVersion.VERSION_1_8)
      }
    }
    dependencies {
      // 4) Jupiter API & Test Runner, if you don't have it already
      androidTestImplementation("androidx.test:runner:1.4.0")
      androidTestImplementation("org.junit.jupiter:junit-jupiter-api:5.8.2")
    
      // 5) The instrumentation test companion libraries
      androidTestImplementation("de.mannodermaus.junit5:android-test-core:1.3.0")
      androidTestRuntimeOnly("de.mannodermaus.junit5:android-test-runner:1.3.0")
    }
    

    Groovy

    android {
      defaultConfig {
        // 1) Make sure to use the AndroidJUnitRunner, or a subclass of it. This requires a dependency on androidx.test:runner, too!
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        // 2) Connect JUnit 5 to the runner
        testInstrumentationRunnerArgument "runnerBuilder", "de.mannodermaus.junit5.AndroidJUnit5Builder"
      }
    
      // 3) Java 8 is required
      compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
      }
    }
    
    dependencies {
      // 4) Jupiter API & Test Runner, if you don't have it already
      androidTestImplementation "androidx.test:runner:1.4.0"
      androidTestImplementation "org.junit.jupiter:junit-jupiter-api:5.8.2"
    
      // 5) The instrumentation test companion libraries
      androidTestImplementation "de.mannodermaus.junit5:android-test-core:1.3.0"
      androidTestRuntimeOnly "de.mannodermaus.junit5:android-test-runner:1.3.0"
    }
    

    本地建设

    该存储库包含多个模块,分为两个子项目。存储库的根目录包含跨子项目共享的构建逻辑,这些逻辑又使用符号链接连接到其父文件夹中的公共构建脚本。

    • instrumentation:基于 Android 的模块的根文件夹,即检测库和示例应用程序。克隆后,在 Android Studio 中打开此项目。
    • plugin:基于 Java 的模块的根文件夹,即 Android 上 JUnit 5 的 Gradle 插件,以及它的测试模块。克隆后,在 IntelliJ IDEA 中打开这个项目。

    作者:mannodermaus
    链接:https://github.com/mannodermaus/android-junit5

    相关文章

      网友评论

          本文标题:安卓-junit5

          本文链接:https://www.haomeiwen.com/subject/xkwkbrtx.html