• Kotlin进阶指南 - 单元测试


    为了减少一些功能繁琐的测试流程,单元测试是提升开发效率的有效方式之一

    在早些年的时候我有记录过一篇 Android 使用单元测试,只不过当时更多的针对 Java 方面的单元测试;在使用 Kotlin 后,我发现单元测试有点不同,好像又没什么改变,故此直接记录一篇 针对JavaKotlin 都可以使用的单元测试blog ~

    单元测试

    我之前想着有Java项目、Kotlin项目俩种场景,针对的单元测试或许有所不同,所以我分别建了一个Java项目和Kt项目,最后经过尝试后发现按照我的这种写法都是可以兼容单元测试

    基础配置

    涵盖 build.gradlemoudleproject 配置

    build.gradle(moudle - app)
    plugins {
        id 'com.android.application'
        id 'org.jetbrains.kotlin.android'
    }
    
    android {
        namespace 'com.example.kotlindemo'
        compileSdk 32
    
        defaultConfig {
            applicationId "com.example.kotlindemo"
            minSdk 21
            targetSdk 32
            versionCode 1
            versionName "1.0"
    
            testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        }
    
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            }
        }
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
        }
        
        kotlinOptions {
            jvmTarget = '1.8'
        }
    }
    
    dependencies {
        implementation 'androidx.appcompat:appcompat:1.4.1'
        implementation 'com.google.android.material:material:1.5.0'
        implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
    
        implementation 'androidx.core:core-ktx:1.7.0'
        testImplementation 'junit:junit:4.13.2'
        androidTestImplementation 'androidx.test.ext:junit:1.1.3'
        androidTestImplementation 'androidx.test:rules:1.3.0'
        androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46

    图示

    在这里插入图片描述

    build.gradle(project)

    这部分并不重要,因为很多人用的As 和 Gradle 都不一样

    在这里插入图片描述


    单元测试

    主要包含 androidTest 和 test 下的俩种单元测试方式,每种测试下都可以用Java、Kotlin,关于 androidTest、test 不理解的可以看这里~

    Look:单元测试可以跑单独一个方法,也可以跑整个类

    在这里插入图片描述

    androidTest

    androidTest单元测试 依赖于应用设备,自行根据场景使用

    Kotlin

    切记以下几点

    • 单元测试的类为 .kt 文件
    • 类内函数均为 kt 语法
    • 类注解 + 函数注解

    AndroidKotlinTest

    package com.example.kotlindemo
    
    import androidx.test.ext.junit.runners.AndroidJUnit4
    import org.junit.Test
    import org.junit.runner.RunWith
    
    @RunWith(AndroidJUnit4::class)
    class AndroidKotlinTest {
    
        @Test
        fun runKotlin() {
            println("Kotlin Test 单元测试")
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    测试结果

    在这里插入图片描述

    Java

    切记以下几点

    • 单元测试的类为 .java 文件
    • 类内函数均为 java 语法
    • 类注解 + 函数注解

    AndroidJavaTest

    package com.example.kotlindemo;
    
    import androidx.test.ext.junit.runners.AndroidJUnit4;
    
    import org.junit.Test;
    import org.junit.runner.RunWith;
    
    @RunWith(AndroidJUnit4.class)
    public class AndroidJavaTest {
    
        @Test
        public void runJava() {
            System.out.println("Java Test 单元测试");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    测试结果

    在这里插入图片描述

    test

    test单元测试 不依赖设备,可直接运行查看结果即可

    Kotlin

    切记以下几点

    • 单元测试的类为 .kt 文件
    • 类内函数均为 kt 语法
    • 函数注解

    KotlinTest

    package com.example.kotlindemo
    
    import org.junit.Test
    
    class KotlinTest {
    
        @Test
        fun runKotlin() {
            println("Kotlin Test 单元测试")
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    测试结果

    在这里插入图片描述

    Java

    切记以下几点

    • 单元测试的类为 .java 文件
    • 类内函数均为 java 语法
    • 函数注解

    JavaTest

    package com.example.kotlindemo;
    
    import org.junit.Test;
    
    public class JavaTest {
    
        @Test
        public void runJava() {
            System.out.println("Java Test 单元测试");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    测试结果

    在这里插入图片描述

  • 相关阅读:
    Linux命令之usermod命令
    AndroidStudio离线打包配置汇总
    设计模式 -- 中介者模式(17)
    Vscode中注释变成繁体的解决方法
    南卡电容笔和wiwu哪款更值得入手?价格实惠且好用的电容笔对比
    C# Winform编程(4)多文档窗口(MDI)
    数学问题求解能力提升:ChatGLM-Math模型的自我批评管道
    Zuul网关简介以及使用
    深入了解视觉语言模型
    Word中Endnote加载项不见了怎么处理?
  • 原文地址:https://blog.csdn.net/qq_20451879/article/details/128020363