2021.6.29:编写JUnit测试
前言:为什么要用单元测试
单元测试是针对最小功能单元的测试。Java中的最小功能单元是方法,所以Java单元测试就是针对单个Java方法的测试。
在此之前,我们检查代码运行情况,是通过写一个main方法,在其中写很多测试语句,这样做有很多缺点:
- 只能有一个main方法,不能把测试代码分离;
- 打印不出测试结果和期望结果,如
expected:3628800,but actual:123456
- 很难编写一组通用的测试代码;
所以,我们需要一种测试框架,帮助我们编写测试。
JUnit
说明
JUnit是一个开源的Java单元测试框架,专为Java设计,用途广泛。JUnit是事实上的单元测试标准框架,任何Java开发者都应当学习使用JUnit编写单元测试。
用JUnit编写单元测试的好处在于,我们可以非常简单地组织测试代码,并随时运行它们,JUnit就会给出成功和失败的测试结果,并生成测试报告,不仅包含测试成功率,还可以统计代码覆盖率——即被测试代码本身有多少通过了测试。对于高质量代码来说,测试覆盖率应该在80%以上。
此外,几乎所有的IDE工具都集成了JUnit,这样我们就可以在IDE中编写并运行JUnit测试。
单元测试的好处
确保单个方法按照正确预期运行。如果修改了这个方法,只需保证对应的单元测试通过,即可认为改动正确。此外,测试代码本身可以作为示范代码,用来演示如何调用该方法。
使用JUnit进行单元测试,我们可以使用断言Assertion来测试预期结果,可以方便地组织和运行测试,并方便地查看测试结果。
此外,JUnit既可以在IDE中运行,也可以方便地集成到Maven这些自动化工具中运行。
编写单元测试时,要遵循一些规范:
- 单元测试代码必须简单,能一下看明白,不需要为它再编写测试;
- 每个单元测试互相独立,不依赖运行顺序;
- 除了要覆盖常用测试用例,还要特别注意测试边界条件,例如0、null、""等。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南