Java使用JUnit进行单元测试

  • Post author:
  • Post category:java




单元测试

单元测试就是针对最小的功能单元编写测试代码,Java程序最小的功能单元是方法,因此,单元测试就是针对Java方法的测试,进而检查方法的正确性。



JUnit测试工具的优点

  • Junit可以灵活的选择执行哪些测试方法,可以一件执行全部测试方法。
  • Junit可以生成全部方法的测试报告。
  • 单元测试中的某个方法测试失败了,不会影响其他测试方法的测试。



JUnit测试工具的使用



1.将JUnit的jar包导入到项目中。

  • IDEA通常会将JUnit工具进行整合,初次使用时会自动进行下载。
  • 如果IDEA没有整合好,需要手工将JUnit包导入到模块中。

    在这里插入图片描述



2.具体使用流程

  1. 编写测试方法:该测试方法必须是公共的无参数无返回值的非静态方法。
  2. 在测试方法上使用注解

    @Test

    ,标注该方法是一个测试方法。
  3. 在测试方法中完成被测试方法的预期正确性测试。
  4. 选中测试方法,选择

    JUnit运行

    ,如果

    测试良好则是绿色



    测试失败,则是红色



3.简单案例演示



A. 编写待测试类

类中有两个方法,其中

add()

为带有返回的值的方法,实现对输入的可变参数的求和(

可变参数的使用参考

),

print()

方法为不带返回的方法,代码如下所示:

	package com.junityanshi;
	
	public class Main1 {
	    public int add(int... num){
	        int sum = 0;
	        for (int i : num) {
	            sum+= i;
	        }
	        return sum;
	    }
	
	    public void print(){
	        System.out.println(10/10);
	        System.out.println("打印正常!!!");
	    }
	
	}


B. 编写测试类(类名随意)

注意:测试类中的方法需要为

1. 公开的,无参数,无返回值 2. 测试方法需要使用@Test注解


在调用被测试方法之后,如果被测方法有返回值,则可以使用

断言类

进行预期值与实际值的自动对比。进行自动化测试。


样例代码如下:

	package com.junityanshi;
	
	import org.junit.Assert;
	import org.junit.Test;
	
	public class TestMain1 {
	    /*
	      测试方法:
	        1. 公开的,无参数,无返回值
	        2. 测试方法需要使用@Test注解
	     */
	    @Test
	    public void testAdd(){
	        Main1 m = new Main1();
	        int sum = m.add(1, 2, 3);
	        // 进行预期正确性测试,使用断言关键字
	        Assert.assertEquals("加和操作出现错误!!!",6, sum);
	    }
	
	    @Test
	    public void testPrint(){
	        Main1 m = new Main1();
	        m.print();
	    }
	}


C. 运行方式
  1. 在单个测试方法代码内右键可以找到运行单个测试方法的按钮,点击运行单个测试方法。如图所示。可以只运行testAdd()测试方法。

    在这里插入图片描述
  2. 在方法体外部,测试类中,右键可以执行全部测试方法。

    在这里插入图片描述
  3. 如果使用IDEA可以点击这些运行按钮,进行运行单个方法或者全体方法。

    在这里插入图片描述

    d. 运行结果

    在这里插入图片描述



4.JUnit中的除

@Test

之外的其他注解

在这里插入图片描述

具体使用:

具体含义可以查看上图,

before与after注解主要为了测试时方便初始化和释放资源。

package com.junityanshi;

import org.junit.*;

public class TestMain1 {

    @Before
    public void before(){
        System.out.println("====before====");
    }

    @After
    public void After(){
        System.out.println("=====After=====");
    }

    @BeforeClass
    public static void beforeclass(){
        System.out.println("===beforeClass=====");
    }

    @AfterClass
    public static void afterclass(){
        System.out.println("===afterClass=====");
    }

    /*
      测试方法:
        1. 公开的,无参数,无返回值
        2. 测试方法需要使用@Test注解
     */
    @Test
    public void testAdd(){
        Main1 m = new Main1();
        int sum = m.add(1, 2, 3);
        // 进行预期正确性测试,使用断言关键字
        Assert.assertEquals("加和操作出现错误!!!",6, sum);
    }

    @Test
    public void testPrint(){
        Main1 m = new Main1();
        m.print();
    }
}

JUnit5.xx注解,名字变了但是功能没变。

在这里插入图片描述



版权声明:本文为qq_36944952原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。