当前位置: 首页 > java >正文

测试关键点

1. 测试的是“行为”不是“实现细节”

  • ✅ 测试应该验证功能是否正确,而不是代码怎么写的。
  • ❌ 不要因为内部重构就需要改一堆测试。

✅ 比如测试输出正确,不关心你用的算法是循环还是递归。


2. 单元测试要小、快、独立

  • :每个测试验证一个明确的点。
  • :运行速度快,支持频繁运行。
  • 独立:每个测试都可以独立运行,互不依赖。

3. 测试命名清晰,能表达意图

一个好测试名就像一句人话说明了功能点和预期:

TEST(ShoppingCartTest, AddingSingleItemIncreasesItemCountByOne)

可读性 > 技巧。


4. 使用断言清晰表达期望

如:EXPECT_EQ(price, 100)
不要仅输出调试信息,而要用断言验证,否则不能自动发现错误。


5. 保持测试代码的可维护性

测试代码也是“产品代码”,要注意:

  • 不要重复
  • 明确 Setup
  • 抽象公共逻辑到 TestFixture
  • 避免测试之间相互依赖

6. 不要滥用 Mock / Stub

  • 使用 mock 要有理由,不要“为 mock 而 mock”
  • 只 mock“你不控制的依赖项”,比如数据库、网络、外部服务

7. 覆盖典型路径 + 边界 + 异常情况

确保你测试了:

类型示例
正常情况add(2, 3) 返回 5
边界情况空输入、最大值、负数
异常情况输入错误,是否抛出异常?
特殊行为幂等性、重复操作是否一致

8. 遇 bug 要写“回归测试”

发现一个 bug → 先写测试重现它
修复后 → 测试变绿,避免以后再犯


9. 集成测试 + 单元测试结合使用

  • 单元测试:验证一个类/函数的行为
  • 集成测试:验证模块之间协作是否正确
  • 端到端测试(E2E):模拟用户真实操作验证整个系统

10. 失败信息要清楚,便于排查

不然你运行测试看到:

Expected: true, Actual: false

这很难定位问题。可以这样写:

EXPECT_EQ(cart.getItemCount(), 1) << "Item count should be 1 after adding 1 item";

总结:写好测试的黄金法则

法则说明
独立每个测试可以单独运行
快速跑得快,能频繁运行
可读测试名和内容能一眼看懂
覆盖全面正常 + 异常 + 边界
验证行为而非实现不跟着内部结构改
及时更新和修复发现问题先补测试,再修代码
加入 CI/CD 流水线中保证代码提交/发布前都通过所有测试
http://www.xdnf.cn/news/8387.html

相关文章:

  • 【Kafka】编写消费者开发模式时遇到‘未解析的引用‘SIGUSR1’’
  • 掌握递归:编程中的优雅艺术
  • 精益数据分析(79/126):从黏性到爆发——病毒性增长的三种形态与核心指标解析
  • Swagger、Springfox、Springdoc-openapi 到底是什么关系
  • 使用 GPUStack 纳管摩尔线程 GPU 进行大语言模型和文生图模型的推理
  • ASPICE认证 vs. 其他标准:汽车软件开发的最优选择
  • C# UDP协议:核心原理、高效实现与实战进阶指南​
  • 2025语音语聊系统源码开发深度解析:WebRTC与AI降噪技术如何重塑语音社交体验
  • 智能存储如何应对极端环境挑战?忆联独家解锁PCIe 5.0固态存储“抗辐射”黑科技,重新定义数据安全防护新高度
  • 机会成本与沉没成本:如何做出理性经济决策
  • grafana/loki-stack 设置日志保存时间及自动清理
  • HarmonyOS NEXT~鸿蒙AI开发全解析:HarmonyOS SDK中的智能能力与应用实践
  • PCB设计教程【入门篇】——电路分析基础-读懂原理图
  • lanqiaoOJ 4330:欧拉函数模板
  • OceanBase 共享存储:云原生数据库的存储
  • 解析 Python 中的 if name == main 机制
  • 多版本Node.js共存管理工具NVM详细使用教程
  • 栈队列 模版题单
  • 2025年电工杯A题数据收集分享
  • 【萤火工场GD32VW553-IOT开发板】ADC电压表
  • 不使用Long.parseLong()将String转成long类型,不使用String.valueOf()将Long转成String类型
  • 通过上传使大模型读取并分析文件实战
  • AI浪潮下,第五消费时代的商业进化密码
  • PTA刷题笔记3(微难,有详解)
  • 自学嵌入式 day 23 - 数据结构 树状结构 哈希表
  • Java集合操作:如何避免并发修改异常
  • PictureThis 解锁高级会员版_v5.3.0 拍植物知名称和植物百科
  • Android屏幕适配利器:Kotlin动态尺寸计算工具类完整封装
  • C++高频面试考点 -- 智能指针
  • Dify1.RAG学习(未完待续)