当前位置: 首页 > news >正文

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.junit4testImplementation Dependencies.junitExtensionsKtxtestImplementation Dependencies.truthtestImplementation Dependencies.mockktestImplementation Dependencies.coroutinesTest
新建测试文件

在这里插入图片描述

示例
package com.guide.module_mainimport 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 {@Beforefun setUp() {}@Testfun testFtp() {assertEquals(1, 1)}@Testfun 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.csdn.net/Agg_bin/article/details/120768579

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

http://www.lryc.cn/news/509986.html

相关文章:

  • C++简明教程(10)(初识类)
  • 光谱相机的工作原理
  • 【Linux进程】基于管道实现进程池
  • 软件测试之单元测试
  • vscode+编程AI配置、使用说明
  • 007-spring-bean的相关配置(重要)
  • 【唐叔学算法】第19天:交换排序-冒泡排序与快速排序的深度解析及Java实现
  • 合并 Python 中的字典
  • 使用Python实现自动化文档生成工具:提升文档编写效率的利器
  • uniapp使用live-pusher实现模拟人脸识别效果
  • 【JavaSE】【网络原理】初识网络
  • 鸿蒙之路的坑
  • Python生日祝福烟花
  • Ubuntu环境 nginx.conf详解(二)
  • shardingsphere分库分表项目实践4-sql解析sql改写
  • mysql数据库中,一棵3层的B+树,假如数据节点大小是1k,那这棵B+可以存多少条记录(2100万的由来)
  • Git 操作全解:从基础命令到高级操作的实用指南
  • 华院计算参与项目再次被《新闻联播》报道
  • 从一次线上故障聊聊接口自动化测试
  • Element-ui的使用教程 基于HBuilder X
  • Chapter 03 复合数据类型-1
  • 【Python知识】Python面向对象编程知识
  • CSharp: Oracle Stored Procedure query table
  • “协同过滤技术实战”:网上书城系统的设计与实现
  • Dhatim FastExcel 读写 Excel 文件
  • YOLO11全解析:从原理到实战,全流程体验下一代目标检测
  • 深度学习领域的主要神经网络架构综述
  • 【Nginx系列】---Nginx配置tcp转发
  • Java抽象工厂+单例模式
  • 后端接口设计