一文详解Java单元测试Junit

文章目录

概述、Junit框架快速入门

单元测试概述

  • 就是针对最小的功能单元(方法),编写测试代码对其进行正确性测试。

main方法测试的问题

  • 只能在main方法编写测试代码,去调用其他方法进行测试

  • 无法实现自动化测试,一个方法测试失败,可能影响其他方法的测试

  • 无法得到测试报告,需要程序员自己去观察测试是否成功

junit单元测试框架

  • 可以对方法进行测试,它是第三方公司开源出来的(IDEA工具以集成)

优点:

  • 可以灵活的编写测试代码,可以针对某个方法执行测试,也支持一键完成对全部方法的自动化测试,且各自独立

  • 不需要程序员分析测试的结果,会自动生成测试报告出来

  • 使用断言机制,通过预测程序的结果来判断程序是否出错

使用步骤:

  1. 将Junit框架的jar包导入项目中(IDEA已集成,不需要手动导入)

  2. 为需要测试的业务类,定义对应的测试类,并为每个业务方法,编写对应的测试方法(必须:公共,无参,无返回值)

  3. 测试方法上声明@Test注解,然后进行测试,测试方法建议使用test开头

使用案例

源码地址:Junit测试源码

包结构

步骤二:编写业务类

java 复制代码
//定义一个字符串工具类
public class StringUtil {

    public static void printNumber(String str){
    	if (str == null){
            System.out.println(0);
            return;
        }
        System.out.println("字符串的长度是:"+ str.length());
    }

    /**
     * 获取字符串的最大索引
     * @param str
     * @return
     */

    public static int getMaxIndex(String str){
        if(str == null){
            return -1;
        }
        return str.length();
    }

步骤三:为业务类生成测试类,测试类代码如下

java 复制代码
public class StringUtilTest {

    @Test   //爆红按Crtl+回车
    public void testPrintNumber(){
        StringUtil.printNumber("1234567890");
        StringUtil.printNumber(null);
    }

    @Test
    public void testGetMaxIndex(){
        System.out.println(StringUtil.getMaxIndex("12345"));
        System.out.println(StringUtil.getMaxIndex(null));
        System.out.println(StringUtil.getMaxIndex(""));

        Assert.assertEquals(StringUtil.getMaxIndex("12345"), 4);
    }

可以看到,我们方法的本意是想输出最大索引,但是如果我们使用系统输出很可能会检测不出来,但是我们用断言就可以检测出来,所以要去修改代码

Junit框架的常见注解

注解 说明
@Test 测试类中的方法必须由这个注解修饰才能成为测试方法
@Before 用来修饰一个实例方法,该方法会在每个测试方法执行之前执行一次
@After 用来修饰一个实例方法,该方法会在每个测试方法执行之后执行一次
@BeforeClass 用来修饰一个静态方法,该方法会在所有测试方法之前只执行一次
@AfterClass 用来修饰一个静态方法,该方法会在所有测试方法之后只执行一次
  • 在测试方法执行之前执行的方法常用于:初始化资源

  • 在测试方法执行完成之后执行的方法常用于:释放资源

测试

java 复制代码
    @Before
    public void testBefore(){
        System.out.println("实例方法:Before");
    }

    @After
    public void testAfter(){
        System.out.println("实例方法:After");
    }

    @BeforeClass
    public static void testBeforeClass(){
        System.out.println("实例方法:BeforeClass");
    }

    @AfterClass
    public static void testAfterClass(){
        System.out.println("实例方法:AfterClass");
    }


实例方法:BeforeClass
实例方法:Before
字符串的长度是:10
实例方法:After
实例方法:Before
最大索引为:4
实例方法:After
实例方法:AfterClass

测试完成

相关推荐
一 乐1 小时前
动漫书销售商城|基于springboot + vue动漫书销售商城(源码+数据库+文档)
java·数据库·vue.js·spring boot·毕业设计
卓怡学长1 小时前
w214基于jsp知道特产网
java·intellij-idea
步行cgn1 小时前
Spring 注解使用详解
java·spring
一条小小yu1 小时前
Spring IoC的理解
java·后端·spring
落魄实习生2 小时前
Agent Scope Java 2.x 系列【7】工具使用
java·开发语言·ai
旺仔学长 哈哈2 小时前
springboot钓鱼爱好者交流平台APP设计与实现
java·spring boot·mysql·充电桩管理系统
自强的小白3 小时前
核心功能(Service接口)
java·mybatis
乌暮4 小时前
深入理解 Java 泛型:把「万能盒子」用对、用稳
java·开发语言·后端·学习
大猫和小黄5 小时前
深入理解 Java Optional:从设计哲学到工程实战
java