Java使用JUnit进行单元测试

单元测试

单元测试就是针对最小的功能单元编写测试代码,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注解,名字变了但是功能没变。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_36944952/article/details/124595071