单元测试
(一) 什么是单元测试
单元测试是软件开发中的一种测试方法,它对软件中最小可测试单元(方法/函数/模块)进行独立的测试。单元测试独立于用户界面,关注内部逻辑和功能。
(二) 单元测试的作用
单元测试的主要目的是发现程序中的错误,确保代码的正确性。通过编写和运行单元测试,开发人员可以及早发现并修复 bug,从而提高代码质量和开发效率。
02
单元测试框架——Junit
(一) JUnit 介绍
1. 单元测试框架
单元测试框架是一种用于编写和运行单元测试的软件工具。单元测试框架提供了一个标准化的环境,用于组织和执行单元测试。
它的主要功能包括:
-
提供用例组织与执行: 大量的测试用例堆砌在一起,容易产生了扩展性与维护性等问题
-
提供丰富的断言方法: 用例执行完之后都需要将实际结果与预期结果相比较(断言),从而断定用例是否执行通过。
-
提供丰富的日志: 当测试用例执行失败时能抛出清晰的失败原因,当所有用例执行完成后能提供丰富的执行结果。例如,总执行时间、失败用例数、成功用例数等。
从这些特性来看单元测试框架的作用是:帮助我们更自动化完成测试,所以,它是自动化测试的基础。
2. Junit
JUnit 是 Java 语言中最流行和最广泛使用的单元测试框架之一。它提供了断言、测试套件和测试报告等功能。
JUnit 官网:junit.org/
(二) JUnit 安装
JUnit 目前分两个版本:JUnit4 和 JUnit5。JUnit5 在 JUnit4 上新增了一些特性,这里主要介绍 JUnit4安装:打开 Maven 项目的 pom.xml 文件,添加依赖:
xml 代码解读复制代码<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
(三) JUnit 编写单元测试
1. 编写单元测试
假如我要测试的类名称是HelloWorld.Java ,那么我创建的测试类通常称为HelloWorldTest.Java 。
如果涉及到覆盖率统计的话,名称不对有可能会被忽略掉。
一个简单的单元测试用例typescript 代码解读复制代码import static org.junit.Assert.assertEquals;
import org.junit.Test;
public class HelloWorldTest {
@Test
public void helloTest() {
//逻辑代码
HelloWorld helloWorld = new HelloWorld();
String result = helloWorld.sayHello();
assertEquals("Hello, World!", result);
}
private class HelloWorld {
public String sayHello() {
return "Hello, World!";
}
}
}
@Test:用来注释一个普通的方法为一条测试用例
assertEquals() :方法用于断言两个值是否相等
2. 测试功能模块
被测试类HelloWorld.Java
typescript 代码解读复制代码public class HelloWorld {
public String sayHello(){
return "Hello, World!";
}
}
测试类HelloWorldTest.Java
java 代码解读复制代码public class HelloWorldtTest {
@Test
public void testHello() {
HelloWorld helloWorld = new HelloWorld();
String result = helloWorld.sayHello();
assertEquals("Hello, World!", result);
}
}
先 new 出 HelloWorld 类的实例,调用 hello 方法,通过 assertEquals() 断言返回结果。