作为 Java 后端开发实习生,快速测试方法是日常开发的核心技能。本教程从简单临时测试到企业级单元测试,覆盖 IDEA 中 4 种主流测试方式,结合 Spring Boot 场景,每步附操作指引和避坑提示,新手可直接对照操作。
一、前置说明:4 种测试方式的适用场景
先根据需求选对方式,避免浪费时间:
| 测试方式 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| 直接运行 main 方法 | 简单工具类、无依赖的静态方法快速验证 | 无需额外依赖,操作最快 | 不适合有 Spring 依赖的业务方法 |
| JUnit 单元测试(推荐) | 正式业务方法、有依赖的方法(Spring 等) | 可复用、可自动化、企业主流 | 需要加 JUnit 依赖 |
| Scratch 文件(临时) | 临时试一段代码、不影响项目文件 | 无需创建类 / 方法,用完即丢 | 无法保存到项目,仅临时使用 |
| 调试模式(Debug) | 方法逻辑复杂,需要看中间变量 / 执行流程 | 可逐行执行,精准定位问题 | 操作稍复杂,适合排查 bug |
二、方式 1:直接运行 main 方法(最快,适合无依赖的简单方法)
如果测试的是静态方法(比如工具类的字符串处理、数学计算),直接在类里加个 main 方法,调用目标方法即可。
详细步骤
- 打开目标类:找到要测试的方法所在的类(比如
StringUtil.java)。 - 添加 main 方法:在类中输入
psvm,按 IDEA 的自动补全快捷键(Tab/Enter),快速生成 main 方法模板。public class StringUtil { // 目标方法:判断字符串是否为空 public static boolean isEmpty(String str) { return str == null || str.trim().isEmpty(); } // 快速生成的 main 方法 public static void main(String[] args) { // 3. 调用目标方法,传入测试参数 boolean result1 = isEmpty(null); boolean result2 = isEmpty("hello"); // 4. 打印结果验证 System.out.println("测试null:" + result1); // 预期true System.out.println("测试hello:" + result2); // 预期false } } - 运行 main 方法:点击 main 方法左侧的绿色小箭头,选择「Run 'StringUtil.main ()'」;或右键 main 方法,选择「Run 'main ()'」。
- 查看结果:IDEA 底部「Run」窗口会显示打印的结果,验证是否符合预期。
避坑提示
- 仅适合无外部依赖的静态方法(比如不需要连接数据库、不需要 Spring 注入的方法);
- 测试完后,若不需要 main 方法,建议删除(避免提交到代码库)。
三、方式 2:JUnit 单元测试(企业主流,推荐)
JUnit 是 Java 单元测试的标准框架,IDEA 原生支持,可快速生成测试类,适合测试有依赖的业务方法(比如 Spring Boot 的 Service 层方法)。
前置准备:添加 JUnit 依赖
如果是 Spring Boot 项目,spring-boot-starter-test 已经包含 JUnit5(无需额外加);如果是普通 Java 项目,在 pom.xml 中添加:
<!-- JUnit5 依赖(Maven) -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.9.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.9.2</version>
<scope>test</scope>
</dependency>
详细步骤(以 Spring Boot Service 层方法为例)
假设要测试的是 UserService.java 中的 getUserById(Long id) 方法:
1. 快速生成 JUnit 测试类
- 打开
UserService.java,在类名上右键 → 选择「Generate」(或按快捷键Alt + Insert); - 在弹出的菜单中选择「Test」;
- 配置测试类:
- Testing library:选择
JUnit5(Spring Boot 项目默认); - Class name:自动生成
UserServiceTest(无需改); - Destination package:自动对应到
src/test/java下的同包路径(无需改); - Member:勾选要测试的方法(比如
getUserById);
- Testing library:选择
- 点击「OK」,IDEA 会自动在
src/test/java下生成测试类。
2. 编写测试代码(Spring Boot 场景)
生成的测试类默认是空的,需补充 Spring 注解和测试逻辑:
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
// 必须加@SpringBootTest:启动Spring容器,才能注入依赖
@SpringBootTest
class UserServiceTest {
// 注入要测试的Service
@Autowired
private UserService userService;
// 测试方法:加@Test注解
@Test
void getUserById() {
// 调用目标方法,传入测试参数
User user = userService.getUserById(1L);
// 验证结果:用Assertions(JUnit5自带)
org.junit.jupiter.api.Assertions.assertNotNull(user); // 断言user不为空
org.junit.jupiter.api.Assertions.assertEquals("张三", user.getName()); // 断言name是张三
// 也可以打印结果辅助验证
System.out.println("查询到的用户:" + user);
}
}
3. 运行测试方法
- 点击测试方法左侧的绿色小箭头,选择「Run 'getUserById ()'」;
- 或右键测试类,选择「Run 'UserServiceTest'」(运行类中所有测试方法);
- 查看结果:IDEA 底部「Run」窗口会显示绿色对勾(测试通过)或红色叉号(测试失败),失败时会显示具体错误原因。
避坑提示
- Spring Boot 测试必须加
@SpringBootTest,否则无法注入依赖; - 测试类和测试方法的访问权限必须是
public(JUnit5 也支持package-private,但建议用public); - 测试方法不要有返回值,必须是
void; - 优先用
Assertions断言验证结果,而不是只打印(断言失败会直接标记测试不通过)。
四、方式 3:Scratch 文件(临时试代码,用完即丢)
如果只是想临时试一段代码(比如测试一个正则表达式、一个日期格式化),不想创建新的类 / 方法,用 IDEA 的 Scratch 文件 最合适。
详细步骤
- 快速打开 Scratch 文件:按快捷键
Ctrl + Shift + Alt + Insert(Windows)/Cmd + Shift + Opt + Insert(Mac); - 选择文件类型:在弹出的菜单中选择「Java」(或其他语言,比如 SQL、JSON);
- 编写测试代码:在生成的 Scratch 文件中直接写代码(可以写 main 方法,也可以写简单的逻辑):
// Scratch 文件示例:测试日期格式化 import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; public class Scratch { public static void main(String[] args) { LocalDateTime now = LocalDateTime.now(); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String formatTime = formatter.format(now); System.out.println("格式化后的时间:" + formatTime); } } - 运行代码:点击 main 方法左侧的绿色箭头运行,查看结果;
- 关闭 Scratch 文件:测试完后直接关闭,无需保存(若想保存,可右键文件选择「Save Scratch File」)。
避坑提示
- Scratch 文件默认保存在 IDEA 的缓存中,关闭后不会自动保存到项目;
- 适合临时验证小逻辑,不适合写正式测试代码。
五、方式 4:调试模式(Debug)测试(适合复杂逻辑)
如果方法逻辑复杂,需要看中间变量的值、执行流程(比如循环了几次、if 走了哪个分支),用 Debug 模式测试最合适。
详细步骤
- 打断点:在目标方法的代码行号左侧点击(会出现一个红色圆点),比如在
userService.getUserById(1L)这一行打断点; - 启动 Debug 模式:点击方法左侧的绿色小箭头,选择「Debug 'getUserById ()'」(或右键选择「Debug」);
- 逐行执行:IDEA 会停在断点处,底部「Debug」窗口会显示当前的变量值,用以下快捷键控制执行:
F8(Step Over):逐行执行,不进入方法内部;F7(Step Into):进入当前行的方法内部(比如进入getUserById方法);F9(Resume):跳到下一个断点,没有断点则直接执行完;Shift + F8(Step Out):跳出当前方法,回到调用处;
- 查看变量:「Debug」窗口的「Variables」标签会显示当前所有变量的值,也可以选中代码中的变量,右键选择「Evaluate Expression」临时计算变量值;
- 结束 Debug:点击「Debug」窗口的红色方块按钮,或按
Ctrl + F2。
避坑提示
- 断点不要打在空行或注释上,否则不会生效;
- 若 Debug 模式启动慢,可检查是否有太多断点(暂时禁用不需要的断点)。
六、总结:新手快速选择指南
- 简单静态方法 → 用 main 方法(最快);
- 正式业务方法(有依赖) → 用 JUnit 单元测试(企业主流);
- 临时试小逻辑 → 用 Scratch 文件(用完即丢);
- 复杂逻辑需要看中间变量 → 用 Debug 模式(精准定位问题)。

6649

被折叠的 条评论
为什么被折叠?



