步骤 1: 创建一个 Java 类 (待测试类)
首先,确保你有一个 Java 类需要测试。假设我们有一个简单的 Calculator 类,如下:
public class Calculator {
// 加法方法
public int add(int a, int b) {
return a + b;
}
// 减法方法
public int subtract(int a, int b) {
return a - b;
}
}
步骤 2: 创建一个 JUnit 测试类
在 src/test/java 目录下创建一个测试类,通常命名为待测试类名称后加 Test 后缀。假设我们为 Calculator 类编写测试类 CalculatorTest。
使用 JUnit 5 编写测试用例
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class CalculatorTest {
// 创建一个 Calculator 对象用于测试
Calculator calculator = new Calculator();
// 测试加法方法
@Test
void testAdd() {
int result = calculator.add(2, 3);
assertEquals(5, result, "2 + 3 should equal 5");
}
// 测试减法方法
@Test
void testSubtract() {
int result = calculator.subtract(5, 3);
assertEquals(2, result, "5 - 3 should equal 2");
}
}
关键点:
- @Test 注解标记每个测试方法。
- assertEquals(expected, actual) 方法用于验证实际结果是否与预期结果一致。
- 如果测试通过,JUnit 会显示绿色。如果测试失败,会显示红色,并提示错误原因。
步骤 3: 运行 JUnit 测试
方法 1: 使用 IDE 运行测试
- 在 IntelliJ IDEA 或 Eclipse 中:
- 右键点击 CalculatorTest 测试类,选择 Run ‘CalculatorTest’(在 IntelliJ 中)或 Run As -> JUnit Test(在 Eclipse 中)。
- 测试将开始运行,测试结果会在下方的 Run 面板中显示。
- 运行结果:
- 通过测试:显示绿色。
- 失败:显示红色,并列出失败的测试和错误信息。
方法 2: 使用命令行运行测试
如果你使用构建工具(如 Maven 或 Gradle),你可以通过命令行来运行测试。
1. Maven:
打开命令行,进入项目目录,运行以下命令:
mvn test
Maven 会自动运行 src/test/java 中的所有测试用例。
2. Gradle:
运行以下命令来运行测试:
gradle test
步骤 4: 查看测试结果
在 IDE 中:
如果测试通过,IDE 会显示绿色的 “绿色勾” 图标,表示测试成功。
如果测试失败,会显示红色的 “叉” 图标,并在控制台中提供详细的错误信息。
命令行输出:
Copy code
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running CalculatorTest
...
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.023 sec
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
步骤 5: 进行调试和优化
如果测试失败,可以根据错误信息调整待测试类或测试用例。例如,检查逻辑错误或测试数据是否正确。
使用 assert 系列方法检查不同的测试结果。
如果需要,添加更多的测试用例,覆盖不同的边界条件和异常场景。
附加:JUnit 5 的常见注解
- @BeforeEach:在每个测试方法执行之前执行一次。
- @AfterEach:在每个测试方法执行之后执行一次。
- @BeforeAll:在所有测试方法执行之前执行一次(静态方法)。
- @AfterAll:在所有测试方法执行之后执行一次(静态方法)。
- @ParameterizedTest:对某个测试方法进行参数化测试。
示例:使用 @BeforeEach 和 @AfterEach
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
public class CalculatorTest {
Calculator calculator;
@BeforeEach
void setUp() {
// 在每个测试方法之前创建一个新的 Calculator 实例
calculator = new Calculator();
}
@AfterEach
void tearDown() {
// 清理操作(如果需要)
}
@Test
void testAdd() {
int result = calculator.add(2, 3);
assertEquals(5, result);
}
}
总结
- 编写 JUnit 测试用例:通过在 Java 类中编写测试方法,使用 JUnit 提供的断言方法来验证代码逻辑。
- 运行测试:可以通过 IDE 或命令行工具(Maven/Gradle)来运行 JUnit 测试。
- 调试和优化:通过查看测试结果来调整代码或测试用例,确保代码质量。