首页 > 其他分享 >Kotlin进阶指南 - 单元测试

Kotlin进阶指南 - 单元测试

时间:2023-04-26 16:25:33浏览次数:43  
标签:Java 进阶 Kotlin 单元测试 test Test junit

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

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

单元测试

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

      • 基础配置
        • build.gradle(moudle - app)
        • build.gradle(project)
      • 单元测试
        • androidTest
          • Kotlin
          • Java
        • test
          • Kotlin
          • Java

基础配置

涵盖 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'
}

图示

在这里插入图片描述

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 单元测试")
    }
}

测试结果

在这里插入图片描述

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 单元测试");
    }
}

测试结果

在这里插入图片描述

test

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

Kotlin

切记以下几点

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

KotlinTest

package com.example.kotlindemo

import org.junit.Test

class KotlinTest {

    @Test
    fun runKotlin() {
        println("Kotlin Test 单元测试")
    }
}

测试结果

在这里插入图片描述

Java

切记以下几点

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

JavaTest

package com.example.kotlindemo;

import org.junit.Test;

public class JavaTest {

    @Test
    public void runJava() {
        System.out.println("Java Test 单元测试");
    }
}

测试结果

在这里插入图片描述

标签:Java,进阶,Kotlin,单元测试,test,Test,junit
From: https://www.cnblogs.com/cps666/p/17356439.html

相关文章

  • Kotlin基础入门 - 创建、兼容一个属于自己的Kotlin项目
    这应该是我年前就想记录的一个基础入门,但是因为一直比较忙,当时只是做了一个备忘草稿,正文就拖到了现在,趁着有时间,赶紧来帮助一下新入行的朋友…关于为何我把这篇Blog叫做创建、兼容一个属于自己的Kotlin项目?主要是因为在实际开发中会遇到以下俩种项目场景><从0-1的Kot......
  • Kotlin基础认知 - 为何Kotlin文件有的带.kt后缀,有的不带?
    有一天看到项目中的Kotlin类,有的有.kt后缀,有的没有,针对这个情况我就简单看了下,然后记录一波创建KotlinClass或KotlinFile创建Kotlinclass创建KotlinFile俩者区别展现形式外部展现内部展现延伸扩展、对向转换Class无后缀→File有后缀File有后......
  • Android结构优化 - Java、Kotlin项目结构分包
    随着Android中Java、Kotlin的混编开发场景越来越多,其中大多人都会将java文件和kt文件放在同一个资源文件夹下,在项目越来越大的情况下,我们进行代码查询、项目重构、优化都不太便捷,所以本篇主要记录通过kotlin分包、java分包来区分、整合java类和kotlin类因为目前项目为......
  • Kotlin实战基础 - 设置点击事件、Activity跳转、传值
    基础过度Kotlin基础入门-变量、方法、对象、继承、接口Kotlin实战基础-设置点击事件、Activity跳转、传值Kotlin实战基础-Activity、Fragment传递参数尚未完整,遇缺再补-点击事件Activity跳转Activity跳转+Intent传值点击事件点击事件是基础功......
  • Kotlin基础入门 - for、forEach 循环
    Kotlin基础入门-for、forEach循环liuyong.blog.csdn.net成就一亿技术人!不论身处何方for循环这种操作都随处可见,鉴于大多数Android开发都是从Java转到Kt的,所以我的思路是从Java的使用习惯来讲一些Kt的for、forEach循环方式基础for循环惯性for循环进阶for循......
  • loopback4:单元测试冻结时间
    解决方案import{expect}from'@loopback/testlab';importsinonfrom'sinon';describe('exampletest',()=>{letclock:sinon.SinonFakeTimers;before(()=>{clock=sinon.useFakeTimers();});after(()=>......
  • Django4全栈进阶之路19 项目实战(用户管理):user_delete.html用户删除画面设计
    1、模块:<tbody>{%foruserinuser_list%}<tr><td>{{user.username}}</td><td>{{user.email}}</td>......
  • Django4全栈进阶之路18 项目实战:登录模块设计
    1、编写函数视图,判定用户名密码,验证通过进入home主页,不通过返回登录页面deflogin_view(request):ifrequest.method=='POST':username=request.POST.get('username')password=request.POST.get('password')print(username)......
  • 若依vue框架添加kotlin依赖,实现kotlin和java混合编译
    第一步:在最外部pom.xml文件添加版本号和依赖管理properties添加版本号<kotlin.version>1.4.21</kotlin.version><!--启用kotlin增量编译--><kotlin.compiler.incremental>true</kotlin.compiler.incremental>dependencyManagement添加依赖管理<!-......
  • SpringBoot项目使用Junit进行单元测试
    SpringBoot项目使用Junit进行单元测试环境:Springboot2.6.7POM.xml文件添加如下内容:<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><dependency>&l......