【AICon】探索八个行业创新案例,教你在教育、金融、医疗、法律等领域实践大模型技术! >>> 了解详情
写点什么

单元测试 vs. 私有方法

  • 2009-02-04
  • 本文字数:841 字

    阅读完需:约 3 分钟

前几天,Naresh Jain 在 Managed Chaos 上发了篇博客,总结了一些测试中的 bad smell 。例如:

一个方法中有太多 test case——被测试的方法做了太多事情。
太多的 setup/teardown——表示被测试类的耦合性太高。
改变一个地方,多处测试受影响——也许是测试的设计问题,也许是实现代码中有过多依赖。
测试上下文中有太多依赖——设计中的耦合性太高。
测试运行速度缓慢——表示你的单元测试也许在使用外部系统,例如网络、数据库、文件系统等等。通常也意味着被测试类有过多的职责。
……

里面还有一条:

为了测试的目的,把成员变量或者方法的访问权限变成 protected 或者 public——可能是因为测试代码跟被测试的代码耦合太高,也可能是本来私有的东西有太多行为,这种情况下应该考虑把它抽出来作为独立的对象。

怎么为私有方法写单元测试?这个难题由来已久了。

有人会选择跳过私有方法,有人会选择去掉 private 限定符;跳过私有方法自然不是良策,但提升访问权限也会破坏封装,在 Naresh Jain 看来也算得上是 bad smell,那怎么解决才好?

Naresh Jain 对此语焉不详,不过还好, Agile Tips 在 08 年 11 月有一篇文章介绍了怎么测试私有方法。文末作者说道:

应该为私有方法添加测试么?我的答案是,在成功的用了 TDD 或者测试驱动重构(Test-Driven Refactoring)以后,你的代码中就不会出现针对私有方法的测试。

如果你用 TDD 编写全新的代码,在没有测试之前是没有功能的。私有方法是到了重构那一步的最后才会出现。把代码转移到私有方法中的这个过程,已经被先前写过的测试覆盖到了。所以,如果你成功了用了 TDD,代码中就不会出现针对私有方法的测试。

如果你在改善遗留代码,你就该使用测试驱动重构。这样的话,可能会临时针对私有方法写一些测试。但是,随着测试覆盖率的增加,那些 public 方法的测试会覆盖到所有的路径,也包括了私有方法的调用。所以,你也不再需要测试私有方法。

在文中,作者也举了一些简单例子说明了用 TDD 的方式重构出私有方法,以及用测试驱动重构处理遗留代码的方式,更多细节请阅读原文

2009-02-04 19:367926
用户头像

发布了 197 篇内容, 共 52.5 次阅读, 收获喜欢 20 次。

关注

评论

发布
暂无评论
发现更多内容

2024 TiDB 社区 PCTA/PCTP/PCSD 免费考证(社区专场)机会来啦!想考证的 TiDBer 看过来!

TiDB 社区干货传送门

社区活动

走势上岸稳赢最准选号技巧

闵东升

大小单双规律最容易掌握技巧方法

闵东升

云服务器利用Docker搭建sqli-labs靶场环境

百度搜索:蓝易云

Docker 云计算 Linux 运维 云服务器

vben-admin 如何实现多语言

麦兜

找到A不存在于B的记录,not in, except ,not exists ,left join + is null 大比拼

TiDB 社区干货传送门

6.x 实践

大小单双走势规律分享个人心得

闵东升

和值什么计算公式实战技巧总结

闵东升

怎么看走势稳赢技巧上岸诀窍

闵东升

买大小单双稳赚的技巧上岸方法

闵东升

docker安装elasticsearch、kibana

百度搜索:蓝易云

Docker elasticsearch Linux Kibana 云服务器

怎么玩大小单双有技巧规律攻略

闵东升

规律总结上岸经验顺口溜技巧

闵东升

200元上岸3万技巧分享

闵东升

ubuntu镜像更新时出现E: Problem executing scripts APT::Update::Post-Invoke错误

百度搜索:蓝易云

云计算 Linux ubuntu 运维 云服务器

TiDB v8.0 组件 TiProxy 测试

TiDB 社区干货传送门

8.x 实践

大小单双推算数学技巧公式规律

闵东升

dockerfile命令详解

百度搜索:蓝易云

Docker 云计算 Linux Dockerfile 云服务器

切换到tidb用户使用tiup命令出现bash: tiup: command not found

TiDB 社区干货传送门

管理与运维 7.x 实践

大小单双规律倍投上岸规律方法

闵东升

快速上岸大小单双技巧口诀

闵东升

上岸技巧稳赢讲解规律诀窍

闵东升

最容易中奖的技巧上岸规律口诀

闵东升

Ubuntu开启生成Core Dump的方法

百度搜索:蓝易云

Linux ubuntu 运维 云服务器 Core Dump

上岸顺口溜买大小单双规律技巧

闵东升

有什么规律技巧大小单双怎么看稳赢

闵东升

长龙短龙怎么确定技巧方案图

闵东升

大小单双规律200元上岸一万技巧

闵东升

如何计算下期和值最准办法

闵东升

捷途山海T2预售正式开启,起售价18.49万元,性价比超高!

Geek_2d6073

教你快准狠上手基于 Dashboard 快速定位问题 SQL

TiDB 社区干货传送门

监控 实践案例 管理与运维 故障排查/诊断 7.x 实践

单元测试 vs. 私有方法_研发效能_李剑_InfoQ精选文章