目录
一、单元测试
1.1 基本概念
针对最小单元的测试,也就是对方法的测试
1.2 以往测试存在的问题和不足
原本只能在main方法中测试
如果报错后续测试将会中断
测试报告需要自己观察
二、快速入门
2.1 基本步骤
①将junit框架的jar包导入到项目
idea集成了junit框架,不需要手动导入,可在注解声明后直接面向报错信息导入
vscode可以直接在源代码操作中生成测试类,按照提示下载junit框架
②为需要测试的类定义对应的测试类,并为每个方法编写对应的测试方法
每个测试方法必须是:public、无参数、无返回值
③为测试方法声明@Test注解,然后编写代码进行测试
绿色表示没有检测到bug(不代表业务逻辑没问题,只是没有代码异常),红色表示代码异常
2.2 基本使用示例(vscode为例)
//这段代码是业务类,该方法存在bug,没有对字符串进行判空操作
package com.study;
public class stringUtil {
public static void getLength(String str) {
System.out.println(str.length());
}
}
//这段代码是测试类,测试类stringUtilTest方法运行后会弹出错误
package com.study;
import org.junit.Test;
public class stringUtilTest {
@Test
public void testGetLength() {
stringUtil.getLength(null);
stringUtil.getLength("admin");
}
}
2.2 断言机制(重要)
通过一个Assert方法来比对输入值的实际输出和期望输出从而达到对业务逻辑的bug测试
延续上述代码,加入一个获取最大索引方法:
//该部分为业务类
package com.study;
public class stringUtil {
public static void getLength(String str) {
System.out.println(str.length());
}
/*
* @param String
*
* @return int
*
* @description
* 该方法的业务逻辑是:该方法返回字符串的最大索引,如果字符串为空,则索引为-1,其余时候返回最大索引
*/
public static int getMaxIndex(String str) {
if (str == null) {
return -1;
}
return str.length();
}
}
//该部分为测试类
package com.study;
import org.junit.Assert;
import org.junit.Test;
public class stringUtilTest {
@Test
public void testGetLength() {
stringUtil.getLength(null);
stringUtil.getLength("admin");
}
@Test
public void testGetMaxIndex() {
stringUtil.getMaxIndex("admin");
// 该测试用例的输入是admin字符串,最大索引期望值应为4,实际返回值为?
Assert.assertEquals(4, stringUtil.getMaxIndex("admin"));
}
}
2.3 其它注解
该图片节选自黑马程序员,适用于Junit4框架,目前已经有Junit5,部分注解已发生变化