目录
其实junit就是一个单元测试框架(可以变相理解为一种方法可以测试代码的正确性)
众所周知,我们写代码需要检查代码的正确性,但是我们不可能把代码全部运行一遍来检查它是否有bug,为了能够检查代码的正确性,junit就被创作出来,它就是一种检查代码是否正确的测试模版。
测试一共有两种
- 黑盒测试:不需要写代码,给出输入值,看程序是否能输出期望值
- 白盒测试:需要写代码,关注程序具体的执行流程。
junit就是白盒测试
1.导入junit库
在你的java项目中,你需要导入junit库才能使用junit中的工具,。这通常可以通过在项目的构建路径中包含JUnit JAR文件来完成。如果你使用的是maven构建工具,你可以在项目中的依赖管理文件中添加JUnit依赖项。例如,对于maven项目,你可以在pom.xml文件中添加以下依赖项:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
2.创建测试类
在这个示例中,我们为待测试的MyMath类创建了一个名为MyMathTest的测试类。这个测试类应该与被测试的类位于相同的包中,并且命名通常应该是被测试的类的名称后加上“Test”。
public class MyMathTest {
//...
}
3.添加注解
在测试类和方法上添加JUnit的注解。这些注解用于标识测试类和测试方法,以及定义测试的执行顺序和配置。在示例中,我们使用了@Test注解来标识测试方法。
@Test
public void testAddition() {
//...
}
常见的注解包括:
- @BeforeClass: 在测试类中的所有测试方法执行之前执行一次。通常用于执行一些耗时的初始化操作,如建立数据库连接。
- @Before:在每个测试方法执行之前执行。通常用于初始化测试数据和设置测试环境。
- @Test:标识一个测试方法。这个方法应该包含你想要测试的代码逻辑。
- @After:在每个测试方法执行之后执行。通常用于清理测试环境,如关闭文件句柄或释放资源。
- @AfterClass:在测试类中的所有测试方法执行之后执行一次。通常用于执行一些耗时的清理操作,如关闭数据库连接。
4.编写测试方法:
在测试类中编写一个或多个测试方法。这些测试方法应该包含你想要测试的代码逻辑,并使用断言方法来验证代码的行为是否符合预期。示例中的testAddition方法测试了MyMath类的add方法。我们使用assertEquals断言方法来验证实际结果是否等于期望结果。
public void testAddition() {
MyMath myMath = new MyMath();
int result = myMath.add(2, 3);
assertEquals(5, result);
}
5.运行测试:
执行代码
6.查看测试结果:
查看编译器中的测试结果,我们并不看是否正确输出,而是使用断言来判断代码块是否正确,判断结果:红色:失败。 绿色:成功。
断言:
断言其实就是预判程序的执行结果。他们是程序中的条件语句,如果条件为真,则程序会继续执行;如果条件为假,则程序会终止执行并给出错误信息。这样可以让我们快速检测代码中的问题,并找出问题的原因。
例如,编写一个函数来计算两个数的和,可以使用断言来检查实际结果是否等于预期结果:
public int add(int a, int b) {
int result = a + b;
assert result == 5; // 断言:结果应该等于5
return result;
}
在这个例子中,如果断言的条件为假(即,结果不等于5),程序会终止执行并给出错误信息,这可以帮助我们快速发现和修复问题。