测试
2025年10月29日大约 2 分钟
测试
测试:是一种为了发现软件中的错误而执行程序的过程。测试的目的是确保软件按预期工作,并且没有缺陷。
测试阶段划分

- 单元测试(Unit Testing):测试最小的代码单元(如函数或方法)是否按预期工作。通常由开发人员编写和执行。
- 集成测试(Integration Testing):测试多个单元组合在一起时的交互作用,确保它们协同工作。
- 系统测试(System Testing):在完整的系统环境中测试整个应用程序,以验证其符合需求规格。
- 验收测试(Acceptance Testing):由最终用户或客户执行,确保软件满足其业务需求和期望。
测试方法
- 黑盒测试(Black Box Testing):测试人员不考虑程序的内部结构和实现细节,只关注输入和输出。
- 白盒测试(White Box Testing):测试人员了解程序的内部结构,设计测试用例以覆盖代码路径。
- 灰盒测试(Gray Box Testing):结合黑盒和白盒测试的方法,测试人员部分了解程序的内部结构。
单元测试
- 单元测试(Unit Testing):测试最小的代码单元(如函数或方法)是否按预期工作。
- JUnit:Java中最常用的单元测试框架,支持注解、断言和测试套件等功能。
JUnit基本使用
- 添加JUnit依赖(如果使用Maven或Gradle)
- 创建测试类
测试类命名规范
测试类通常以被测试类的名称加上Test后缀命名,例如:Calculator类的测试类命名为CalculatorTest。
- 编写测试方法,使用
@Test注解标记
测试方法声明规定
测试方法必须是public访问修饰符,返回类型为void,且不能有参数。
@Test
public void testMethod() {
// 测试代码
}- 使用断言(Assertions)验证结果
- 运行测试
断言
断言用于验证测试结果是否符合预期。JUnit提供了多种断言方法,如下表所示:
| 断言方法 | 说明 |
|---|---|
Assertions.assertEquals(expected, actual) | 验证两个值是否相等 |
Assertions.assertNotEquals(unexpected, actual) | 验证两个值是否不相等 |
Assertions.assertTrue(condition) | 验证条件为真 |
Assertions.assertFalse(condition) | 验证条件为假 |
Assertions.assertNull(object) | 验证对象为null |
Assertions.assertNotNull(object) | 验证对象不为null |
Assertions.assertThrows(expectedType, executable) | 验证执行代码抛出指定类型的异常 |
Junit常用注解
| 注解 | 说明 |
|---|---|
@Test | 标记测试方法 |
@ParameterizedTest| 参数化测试(让一个测试运行多次,每次运行尽参数不同) | | |
@ValueSource| 为参数化测试提供单个参数值的数组 | | |
@BeforeEach | 在每个测试方法执行前运行 |
@AfterEach | 在每个测试方法执行后运行 |
@BeforeAll | 在所有测试方法执行前运行(必须为静态方法) |
@AfterAll | 在所有测试方法执行后运行(必须为静态方法) |