您现在的位置是:首页 >技术教程 >快速入门Junit单元测试:提高代码质量和效率网站首页技术教程

快速入门Junit单元测试:提高代码质量和效率

漩涡编程,一鸣惊人 2024-06-17 11:28:11
简介快速入门Junit单元测试:提高代码质量和效率

Junit单元测试


一.什么是Junit单元测试?

Junit是一个功能强大的Java单元测试框架,它提供了各种功能和类来测试Java应用程序的各个方面。
单元测试是对软件中某个模块的最小可测试单元进行验证,以确保代码按照预期执行并产生正确的结果。
在JUnit中,测试用例由一个或多个测试方法组成,每个测试方法都测试相应的代码模块、方法或类。
JUnit提供了各种断言方法,用于判断测试结果是否与预期结果相符。
通过使用JUnit单元测试,开发人员可以测试代码的各个方面并确保其质量,
从而提高代码的可维护性、可靠性和可重用性。

二.测试分类

1.黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值

2.白盒测试:需要写代码,关注程序的具体执行步骤


三.Junit使用:白盒测试

1.步骤

1.定义一个测试类(测试用例)
	建议:
		测试类名:被测试的类名Test  CalculationTest
		包名:xxx.xxx.xx.test		cn.itcast.test
		
2.定义测试方法:可以独立运行
	建议:
		方法名:test测试的方法名	testAdd()
		返回值:void
		参数列表:空参
		
3.给方法加@Test
4.导入Junit依赖环境

判定结果:
	红色:失败
	绿色:成功
	(一般使用断言Assert操作来处理结果)
	Assert.assertEquals(期望的结果,运算的结果);

2.具体实现

创建如下的junit包和test包,并创建Calculator类和CalculatorTest类

image-20230521184648811

实现Calculator计算类的加减乘除

public class Calculator {
    public int add(int x1,int x2){
        return x1+x2;
    }

    public int sub(int x1,int x2){
        return x1-x2;
    }

    public int multiply(int x1,int x2){
        return x1*x2;
    }

    public double divide(int x1,int x2){
        if (x2==0){
            return -1;
        }
        return x1/x2;
    }
}

public class CalCulatorTest {

    @Test
    public void testAdd(){
        Calculator cal = new Calculator();
        int result = cal.add(1, 2);

//        判断结果与预期值是否符合
        Assert.assertEquals(3,result);
    }
}

tips:如果@Test报错,记得导入Junit包哦~

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nj9bY8fJ-1684667889060)(C:UsersskywalkerAppDataRoamingTypora	ypora-user-imagesimage-20230521185935850.png)]

3.结果显示

加入@Test后,testAdd()不需要Main方法也可以独立运行

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l1x9w9O2-1684667801191)(C:UsersskywalkerAppDataRoamingTypora	ypora-user-imagesimage-20230521190105009.png)]

此时我们可以看到,是绿色的√,正确。

如果我们输入错误的值呢?

public class CalCulatorTest {

    @Test
    public void testAdd(){
        Calculator cal = new Calculator();
        int result = cal.add(1, 2);

//        判断结果与预期值是否符合
        Assert.assertEquals(1,result);
    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YZTjH5EN-1684667801193)(C:UsersskywalkerAppDataRoamingTypora	ypora-user-imagesimage-20230521190230515.png)]

我们可以在右边看到Expected预期值与Actual实际值不同,显示红色。通过测试,我们可以判断输入值与输出值是否一直。

补充

@before:

修饰的方法会在测试方法之前自动执行

@after:

修饰的方法会在测试方法执行之后自动被执行

测试:

public class CalCulatorTest {

    @Test
    public void testAdd(){
        Calculator cal = new Calculator();
        int result = cal.add(1, 2);

//        判断结果与预期值是否符合
        Assert.assertEquals(3,result);
        System.out.println("计算结果为:"+result);
    }

    /**
     * 用于资源申请,所有方法执行之前都会执行该方法
     */
    @Before
    public void init(){
        System.out.println("初始化中...");
    }

    /**
     * 用于释放资源,每次都会执行
     */
    @After
    public void close(){
        System.out.println("释放资源中...");
    }
}

结果:
在这里插入图片描述

如果这篇文章对你有帮助的话,点赞收藏+关注支持一下叭,谢谢你啦~

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。