原创 | 使用 JUnit、AssertJ 和 Mockito 编写单元测试和实践 TDD (四)关于单元测试的常见错误观念和做法

本文探讨了关于单元测试的常见错误观念,如认为测试是测试人员的工作、增加负担、简单代码无需测试等,并解释了为何这些观念是错误的。此外,还提到了将单元测试写成集成测试、仅覆盖“快乐路径”等错误做法,强调了单元测试的重要性和正确实践。文章提倡采用TDD,先写测试再写代码,以提高代码质量和测试覆盖率。
摘要由CSDN通过智能技术生成

在这里插入图片描述
在这里插入图片描述
上一章讲到“单元测试在整个测试体系中的位置”,这一章我们讲讲“关于单元测试的常见错误观念和做法”。

很多人对单元测试存在错误的观念和错误的做法。典型的错误观念和做法如下:

1. 错误观念

  • 测试是测试人员的工作。程序员只应该写产品代码

    测试人员只在乎整个系统在功能和外部质量方面是否满足客户和用户的需求,他们既不了解、也不在乎你写的代码和你的程序结构,因此他们只能编写黑盒测试而无法编写白盒测试。写代码和定义内部结构是程序员的工作,通过单元测试证明你的代码和结构的正确性和可靠性同样是程序员的工作。

  • 编写单元测试会加重负担,拖慢进度

    这是对单元测试最大的误解!跟我们的直觉恰恰相反,在软件的整个生命周期范围里面,编写单元测试会大大减轻负担,并且会让我们保持平稳的速度前进。没有单元测试,我们也许开始时速度会很快,但后面随着bug的不断爆发,很大一部分的时间会用于寻找、调试和修复bug,用于编写生产代码的时间越来越少,项目进展也会越来越慢。单元测试从一开始就大大减少了bug存在的可能性,出了bug也能够及时发现,准确定位,以最小的代价在最短的时间内修复bug。

    首先&

AssertJ 是 JAVA 的流畅断言库。示例代码:// unique entry point to get access to all assertThat methods and utility methods (e.g. entry) import static org.assertj.core.api.Assertions.*;  // common assertions assertThat(frodo.getName()).isEqualTo("Frodo"); assertThat(frodo).isNotEqualTo(sauron)                  .isIn(fellowshipOfTheRing);  // String specific assertions assertThat(frodo.getName()).startsWith("Fro")                            .endsWith("do")                            .isEqualToIgnoringCase("frodo");  // collection specific assertions assertThat(fellowshipOfTheRing).hasSize(9)                                .contains(frodo, sam)                                .doesNotContain(sauron);  // using extracting magical feature to check fellowshipOfTheRing characters name :) assertThat(fellowshipOfTheRing).extracting("name").contains("Boromir", "Gandalf", "Frodo", "Legolas")                                                   .doesNotContain("Sauron", "Elrond");  // map specific assertions, ringBearers initialized with the elves rings and the one ring bearers. assertThat(ringBearers).hasSize(4)                        .contains(entry(oneRing, frodo), entry(nenya, galadriel))                        .doesNotContainEntry(oneRing, aragorn);  // and many more assertions : dates, file, numbers, exceptions ... 标签:AssertJ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值