Android unitTest 单元测试用例编写(初始)


本片讲解的重点是unitTest,而不是androidTest哦

了解测试相关库

androidx.compose.ui:ui-test-junit4:
用于Compose UI的JUnit 4测试库。
它提供了测试Compose UI组件的工具和API。

androidx.test.ext:junit-ktx:
JUnit 4的Kotlin扩展库。
它提供了Kotlin友好的JUnit4注解和扩展函数。

com.google.truth:truth:
一个用于编写简洁、可读性强的断言的库。
它提供了比JUnit自带的断言更丰富和更易用的API。

io.mockk:mockk:
一个用于Kotlin的Mockito风格的模拟框架。
它允许你在测试中创建和使用mock对象。

org.robolectric:robolectric:
一个用于Android的单元测试框架。
它允许你在JVM上运行测试,而不是在真实的Android设备或模拟器上,从而加快测试速度。

androidx.arch.core:core-testing:
Android Architecture Components的测试库。
它提供了用于测试LiveData、Room等组件的工具。

org.jetbrains.kotlinx:kotlinx-coroutines-test:
Kotlin协程的测试库。
它提供了用于测试协程的工具和API。

androidx.test.ext:junit:
AndroidX的JUnit扩展库。
它提供了额外的JUnit注解和功能,特别是针对Android测试。

androidx.test.espresso:espresso-core:
一个用于Android UI测试的框架。
它允许你编写测试来模拟用户与UI组件的交互。

导入依赖库
//  依赖Android环境
//    androidTestImplementation Dependencies.junit4
//    androidTestImplementation Dependencies.junitExtensionsKtx
//    androidTestImplementation Dependencies.truth
//    androidTestImplementation Dependencies.mockk
//    androidTestImplementation Dependencies.coroutinesTest

//  依赖JAVA环境
    testImplementation Dependencies.junit4
    testImplementation Dependencies.junitExtensionsKtx
    testImplementation Dependencies.truth
    testImplementation Dependencies.mockk
    testImplementation Dependencies.coroutinesTest
新建测试文件

在这里插入图片描述

示例
package com.guide.module_main

import androidx.test.ext.junit.runners.AndroidJUnit4
import io.mockk.every
import io.mockk.mockk
import io.mockk.verify
import junit.framework.TestCase.assertEquals
import kotlinx.coroutines.ExperimentalCoroutinesApi
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith

/**
 * @date 2024/12/25
 * @description ftp测试用例
 * @version 1.0
 */

// UserService.kt
interface UserService {
    fun getUserById(id: Int): User?
}

// UserServiceImpl.kt
class UserServiceImpl : UserService {
    override fun getUserById(id: Int): User? {
        // 实际的实现会从数据库或其他服务中获取用户
        return null
    }
}

// User.kt
data class User(val id: Int, val name: String)

class FtpActivityTest {
    @Before
    fun setUp() {

    }

    @Test
    fun testFtp() {
        assertEquals(1, 1)
    }
    @Test
    fun getUserById() {
        // 创建UserService的mock对象
        val userServiceMock = mockk<UserService>()

        // 定义mock对象的行为
        val expectedUser = User(1, "John Doe")
        every { userServiceMock.getUserById(1) } returns expectedUser

        // 调用mock对象的方法
        val actualUser = userServiceMock.getUserById(1)

        // 验证mock对象的方法是否被调用
        verify { userServiceMock.getUserById(1) }

        //断言返回的用户是否符合预期
        assertEquals(expectedUser, actualUser)
    }
}

执行

在这里插入图片描述

查看结果

在这里插入图片描述

网页结果

在这里插入图片描述

其他

点灯篇(⭐⭐⭐)
https://blog.youkuaiyun.com/Agg_bin/article/details/120768579

mockk的使用(⭐⭐⭐⭐)
https://blog.youkuaiyun.com/rikkatheworld/article/details/115823178
https://juejin.cn/post/7304236588148752436

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值