java单元测试命名需清晰表达“测什么、条件、预期结果”;类名用被测实现类名+test;方法名格式为test_,全小写加下划线;包路径与源码镜像,仅根目录换为test。

Java 单元测试命名要清晰,核心是让任何人一眼看懂“测什么”“在什么条件下”“预期结果是什么”。不靠注释、不靠上下文,光看名字就能判断测试意图。
测试类名:用源类名 + Test 后缀
必须严格对应被测实现类,不是接口,也不是抽象类。
- 被测类是 UserService → 测试类命名为 UserServiceTest
- 被测类是 OrderServiceImpl → 测试类命名为 OrderServiceImplTest
- 接口 UserDao 不写测试类;它的实现类 JdbcUserDao 才对应 JdbcUserDaoTest
测试方法名:动词开头 + 被测方法 + 下划线 + 场景/状态
格式统一为 test
- testLogin_success —— 正常登录成功
- testLogin_invalidPassword —— 密码错误
- testCalculateTotal_emptyCart —— 购物车为空时计算总价
- testSaveUser_nullName —— 用户名为空时保存失败
避免模糊词如 test1、testCaseA、testWithParam;条件描述要具体,比如用 invalidPassword 而不是 fail,用 emptyCart 而不是 noItem。
包路径:与源码结构镜像,但根目录换为 test
测试文件路径必须和源类路径完全一致,仅把 src/main/java 替换为 src/test/java。
- 源类:
src/main/java/com/example/order/OrderService.java - 测试类:
src/test/java/com/example/order/OrderServiceTest.java
这种结构让 IDE 和 CI 工具能自动识别、扫描、执行对应测试,也方便开发者快速定位和维护。
补充建议:避免常见歧义点
- 不用 is 开头(如 testIsLoginValid),易与布尔变量混淆
- 不缩写关键名词(如用 password,不用 pwd)
- 不包含版本号、作者名、时间戳等无关信息
- 异常场景优先用业务语义命名,而非异常类名(如 testWithdraw_insufficientBalance,而不是 testWithdraw_InsufficientBalanceException)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











