Debug 的经验

2025/04/05

一、背景

这里存放一些优化调试行为的点。

二、场景

(一)

单元方法测试为了验证某个 assertNull(a), 可以在执行中直接 F2 修改原变量为 null,验证是否跑到。如果是整个服务范围的测试,建议从业务逻辑上考虑造出这样的数据。

(二)条件断点语句

IDEA debug 查看当前 BeanPostProcessor 类型的变量 pp 是否为 InfrastructureAdvisorAutoProxyCreator,断点语句应该怎么写?

条件断点表达式这样写:

pp.getClass() == org.springframework.aop.framework.autoproxy.InfrastructureAdvisorAutoProxyCreator.class

(三)给每个测试方法都起自定义名称

核心价值在于让测试报告自解释,使团队能快速理解测试目的,尤其在复杂业务场景中大幅提升维护效率。推荐为所有测试方法添加此注解以提升代码可读性。

(四)强制跳过所有断点

(五)异步调试

尽量延长 main 线程的时长,在 main 方法体最后写上一句 sleep 语句,因为在测试时如果 main 线程 (非守护线程) 退出了,jvm 也会退出,这样的话就可能观察不到异步线程里的行为了。