单元测试实战

文章目录

为什么要做单元测试?

测试代码 :通过编写和运行单元测试,开发者能够快速验证代码的各个部分是否按照预期工作,有利于保证系统功能的正确可用,这是单元测试的核心作用。
改进代码 :编写单元测试的过程中,开发者能够再次审视业务流程和功能的实现,更容易发现一些代码上的问题。比如将复杂的模块进一步拆解为可测试的单元。
利于重构 :如果已经编写了一套可自动执行的单元测试代码,那么每次修改代码或重构后,只需要再自动执行一遍单元测试,就知道修改是否正确了,能够大幅提高效率和项目稳定性。
文档沉淀:编写详细的单元测试本身也可以作为一种文档,说明代码的预期行为。

单元测试的几个核心要点是:

最小化测试范围 :单元测试通常只测试代码的一个非常小的部分,以确保测试的简单和准确。
自动化 :单元测试应该是自动化的,开发人员可以随时运行它们来验证代码的正确性,特别是在修改代码后。而不是每次都需要人工去检查。
快速执行 :每个单元测试的执行时间不能过长,应该尽量做到轻量、有利于频繁执行。
独立性:每个单元测试应该独立于其他测试,不依赖于外部系统或状态,以确保测试的可靠性和可重复性。

单元测试目标

新模块中核心代码单元测试覆盖率80%??

新模块中整体单元测试覆盖率60%??

单元测试框架

JUnit

JUnit是一个为Java编程语言设计的开源单元测试框架,由 Kent Beck 和 Erich Gamma建立,它是单元测试框架家族中的一个,这些框架被统称为xUnit,JUnit是xUnit 家族中最为成功的一个。JUnit 有它自己的 Junit 扩展生态圈,多数 Java 的开发环境都已经集成了 JUnit 作为单元测试的工具。JUnit 的最新版本是JUnit 5,它不再是一个单一的JAR 包,而是由JUnit platform(平台)、JUnit Jupiter 和JUnit Vintage 这3 部分组成。

官网地址:JUnit 5

xml 复制代码
<!-- junit mvn 配置 待补充 -->

TestNG

TestNG 是另一个为Java编程语言设计的开源单元测试框架,是一个受JUnit和NUnit启发而来的测试框架,但它引入了一些新功能,使其更强大、更容易使用,例如:

  • 核心特性是多线程测试执行,测试代码是否是多线程安全的;
  • 提供注释支持;
  • 支持数据驱动测试(使用@DataProvider);
  • 支持参数化测试;
  • 强大的执行模型(不再有TestSuite);
  • 支持各种工具和插件(Eclipse, IDEA, Maven等...);
  • 嵌入BeanShell以获得更多的灵活性;
  • 用于运行时和日志记录的默认JDK函数(没有依赖关系)。

官网地址:https://testng.org/

xml 复制代码
<dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>7.8.0</version>
</dependency>

单元测试工具:

单测生成&单测覆盖率统计工具:

  1. Idea的TestMe插件
  2. Squaretest

参考:
软件测试/测试开发 | TestNG 与 Junit 对比,测试框架如何选择?
TestNG和Junit的区别
2021年软件测试工具总结------单元测试工具
【好物推荐】一款帮我快速达成单元测试的覆盖率指标的IDEA插件 ------ TestMe
idea单元测试覆盖率提升插件

相关推荐
云半S一8 小时前
春招准备之测试场景面试篇
单元测试
i***132415 小时前
【SpringBoot】单元测试实战演示及心得分享
spring boot·后端·单元测试
fzm529816 小时前
嵌入软件单元测试的全面研究与实践
自动化测试·单元测试·汽车·嵌入式·白盒测试
汽车仪器仪表相关领域17 小时前
PSB-1:安全增压与空燃比双监控仪表 - 高性能引擎的 “双重安全卫士“
java·人工智能·功能测试·单元测试·汽车·可用性测试·安全性测试
程序员威子17 小时前
最强平替Postman的工具,拒绝浏览器套壳
功能测试·selenium·测试工具·jmeter·单元测试·测试用例·postman
i***132417 小时前
Spring Boot 整合 log4j2 日志配置教程
spring boot·单元测试·log4j
卓码软件测评20 小时前
第三方CNAS软件测试评测机构:【软件测试工具Apifox中的WebSocket接口测试从入门到精通】
websocket·网络协议·测试工具·单元测试·测试用例
3***C7441 天前
Spring Boot 整合 log4j2 日志配置教程
spring boot·单元测试·log4j
IMPYLH2 天前
Lua 的 rawset 函数
开发语言·笔记·单元测试·lua
霍格沃兹测试开发学社2 天前
被裁后,我如何实现0到3份大厂Offer的逆袭?(内附面试真题)
人工智能·selenium·react.js·面试·职场和发展·单元测试·压力测试