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

junit单元测试 - 实践

junit单元测试 - 实践

介绍

测试:是一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。

阶段划分:单元测试、集成测试、系统测试、验收测试。

1单元测试

  • 介绍:对软件的基本组成单位进行测试,最小测试单位。

  • 目的:检验软件基本组成单位的正确性。

  • 测试人员:开发人员

2. 集成测试

  • 介绍:将已分别通过测试的单元,按设计要求组合成系统或子系统,再进行的测试。

  • 目的:检查单元之间的协作是否正确。

  • 测试人员:开发人员

3. 系统测试

  • 介绍:对已经集成好的软件系统进行彻底的测试。

  • 目的:验证软件系统的正确性、性能是否满足指定的要求。

  • 测试人员:测试人员

4验收测试

  • 介绍:交付测试,是针对用户需求、业务流程进行的正式的测试。

  • 目的:验证软件系统是否满足验收标准。

  • 测试人员:客户/需求方

测试方法:

白盒测试: 

清楚软件内部结构、代码逻辑。

用于验证代码、逻辑正确性。

黑盒测试 :

不清楚软件内部结构、代码逻辑。

用于验证软件的功能、兼容性、验收测试等方面。

灰盒测试:

结合了白盒测试和黑盒测试的特点,既关注软件的内部结构又考虑外部表现(功能)。

  • JUnit:

  • 最流行的Java测试框架之一,提供了一些功能,方便程序进行单元测试

平时如果在main方法进行测试时,会存在如下问题

  1. 测试代码与源代码未分开,难维护。

  2. 一个方法测试失败,影响后面方法。

  3. 无法自动化测试,得到测试报告。

使用了JUnit单元测试框架进行测试,将会有以下优势:

  1. 测试代码与源代码分开,便于维护。

  2. 可根据需要进行自动化测试。

  3. 可自动分析测试结果,产出测试报告

测试案例:

main目录下待测试代码:

public class UserService {/*** 给定一个身份证号, 计算出该用户的年龄* @param idCard 身份证号*/public Integer getAge(String idCard){if (idCard == null || idCard.length() != 18) {throw new IllegalArgumentException("无效的身份证号码");}String birthday = idCard.substring(6, 14);LocalDate parse = LocalDate.parse(birthday, DateTimeFormatter.ofPattern("yyyyMMdd"));return Period.between(parse, LocalDate.now()).getYears();}/*** 给定一个身份证号, 计算出该用户的性别* @param idCard 身份证号*/public String getGender(String idCard){if (idCard == null || idCard.length() != 18) {throw new IllegalArgumentException("无效的身份证号码");}return Integer.parseInt(idCard.substring(16,17)) % 2 == 1 ? "男" : "女";}}

1要使用junit测试首先需要在pom.xml中引入相关依赖

<!--Junit单元测试依赖-->

<dependency>

<groupId>org.junit.jupiter</groupId>

<artifactId>junit-jupiter</artifactId>

<version>5.9.1</version>

<scope>test</scope>

</dependency>

2在test/java目录下,创建测试类,并编写对应的测试方法,并在方法上声明@Test注解。

@Test

public void testGetAge(){

Integer age = new UserService().getAge("110002200505091218"); System.out.println(age);

}

3运行测试

注意:

  • 测试类的命名规范为:XxxxTest(因为在maven生命周期运行test时,会按照该命名规范的测试类进行查找测试)

  • 测试方法的命名规定为:public void xxx(){...}

常见注解

断言:

用来帮我们确定被测试的方法是否按照预期的效果正常工作

示例:

测试结果:

http://www.gsyq.cn/news/46060.html

相关文章:

  • 2025年提分产品渠道哪家靠谱
  • 在JMeter中利用地名查询天气预报并查看响应结果
  • 2025年11月小户型油烟机型号排名榜:小厨房净烟方案实测
  • 2025 年 11 月冷库板/聚氨酯冷库板/机制板, 冷库门, 冷库工程/冷库集成厂家推荐排行榜,专业实力与客户满意度全景解析及选购指南
  • 文件上传使用分片,文件下载使用流式方案,同时还要实现进度条功能
  • HeavenHell
  • 基于氢氧燃料电池的分布式三相电力系统Simulink建模与仿真
  • 大宇mini壁挂洗衣机售后服务电话4009968065
  • Why skepticism is harmful to humanity
  • 德门子油烟机推出24小时售后客服受理中心(2025更新上线)
  • 名流热水器推出24小时售后客服受理中心(2025更新上线)
  • 美大集成灶售后电话4001819193维修24小时全国各市售后服务点
  • 欧意燃气灶售后电话4001819193售后维修服务-欢迎您--10分钟前更新
  • 阿诗丹顿热水器售后电话4001819193维修电话(各点)24小时故障报修热线
  • 智米空调售后电话4001819193(全国统一网点)24小时售后客服热线
  • 尊威油烟机售后电话4001819193维修热线电话-24小时全国统一报修
  • 新科中央空调售后电话4001819193全国售后服务热线电话2025已更新(今日/维修
  • 降AI攻略:博主实测经验分享
  • Doxygen 入门
  • CSAPP学习笔记(施工中)
  • 当Mb连不上虚拟机的时候,这是因为啥?我应该怎么解决?? - fish666
  • 会议开了一整天,记录却只有三行?
  • Day17盒子模型中设置外边距时的问题
  • 2025 年 11 月食堂承包厂家推荐排行榜:学校、工厂、企业、单位、医院、工地、科技园、工业园、产业园、养老院食堂承包公司精选
  • 2025 年 11 月鞋子设计打版与技术培训权威推荐榜:开发设计、版型设计、培训创业班及设计培训学校精选指南
  • 在线甘特图工具选型指南:5款产品深度对比评测
  • 漏洞赏金实战:我是如何轻松获得2500美元奖金的
  • 2025.11.10总结
  • 【CI130x 离在线】C++事件驱动模式编程
  • 2025 年 11 月食堂承包厂家推荐排行榜,学校食堂承包,工厂食堂承包,企业单位食堂承包,医院工地科技园食堂承包公司精选