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(){...}

常见注解

断言:

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

示例:

测试结果:

相关推荐
一晌小贪欢17 小时前
Python 测试利器:使用 pytest 高效编写和管理单元测试
python·单元测试·pytest·python3·python测试
汽车仪器仪表相关领域20 小时前
MTX-A 模拟废气温度(EGT)计 核心特性与车载实操指南
网络·人工智能·功能测试·单元测试·汽车·可用性测试
我命由我123451 天前
Android 控件 - 最简单的 Notification、Application Context 应用于 Notification
android·java·开发语言·junit·android studio·android jetpack·android-studio
卓码软件测评1 天前
第三方软件课题验收测试【使用Docker容器部署LoadRunner负载生成器以实现弹性压测 】
测试工具·docker·容器·性能优化·单元测试·测试用例
android_cai_niao1 天前
JUnit 4.x最新版本
junit·junit5·junit4
Apifox.2 天前
Apifox 1 月更新|MCP 调试、测试套件、测试报告重构、网络信息查看、Hoppscotch 导入
前端·人工智能·测试工具·单元测试·团队开发
快乐肚皮2 天前
OpenResty:Nginx的进化之路
nginx·junit·openresty
卓码软件测评2 天前
第三方移动应用测试机构:【移动应用性能测试:使用LoadRunner的Mobile Application - HTTP/HTML协议】
测试工具·ci/cd·性能优化·单元测试·测试用例
汽车仪器仪表相关领域2 天前
70A大电流+三档电压可调:Midtronics MSP-070系列电源充电器汽车ECU刷新与电池维护实战全解
人工智能·功能测试·单元测试·汽车·可用性测试
我送炭你添花2 天前
Pelco KBD300A 模拟器:18. 按依赖顺序 + 复杂度由低到高逐步推进pytest单元测试
python·单元测试·log4j·pytest