编写单元测试的10个Reason

2024-01-18 22:32
文章标签 编写 单元测试 reason

本文主要是介绍编写单元测试的10个Reason,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

大部分程序猿(媛)都不会对自己的代码编写单元测试,原因无非是:

  • “我不知道如何去编写测试代码…”

  • “编写测试代码对我来说太难了!”

  • “我可没时间做这个!”

  • “测试可不是我的工作哦~”

  • “我的程序很简单,不需要进行单元测试吧…”

殊不知,编写单元测试是提高软件质量的非常有效的武器,毕竟对于我们编写的代码来说,只有自己才是最了解并且最知道哪里可能出现问题的人。

  • Tests Reduce Bugs in New Features

为你的新功能添加单元测试将会提高代码的质量。单元测试不可能消灭bug,但是可以在你添加新功能时明显减少bug数量。

  • Tests Reduce Bugs in Existing Features

通过良好的单元测试,可以很好避免新代码对已有功能的影响。如果添加新代码使已有功能出现问题,现有的单元测试case会立刻失效,你将很容易发现出现bug的位置。

  • Tests Are Good Documentation

随着时间的流逝,你会对以前编写过的一些接口、类、方法等的功能变得模糊不清,这时候单元测试代码就是你回忆起这些功能的最简洁易懂的代码片段了,远比注释实用的多。

  • Tests Reduce the Cost of Change

单元测试会让你更大胆地尝试新想法对程序进行修改而不需要考虑对已有功能的影响,如果出现问题的话也能够及时准确地定位,这无疑会大大减少修改已有代码产生bug后再Debug的成本。

  • Tests Improve Design

单元测试强迫你编写可测试的代码。这样,你就会越来越少的依赖单例和全局变量,相反的,使你所编写的类耦合性更小,更方便使用,因为耦合性较大的代码是很难测试的哦!

  • Tests Allow Refactoring

单元测试会让你更便于对代码进行重构。你不必去考虑重构对已有功能的影响,有了单元测试的支撑,即使出现bug,也会很容易定位。

  • Tests Constrain Feature

很多时候,程序员编写的代码并不能完全满足客户的需求,这时你可以采用测试优先的策略,即首先为你将要实现的每个功能编写一些单元测试用例,再去实现功能。这样,当每个功能的用例pass的时候,就可以继续去开发下一个功能了。这样的应用是很易于扩展的。

  • Tests Defend Against Other Programmers

这是在实际工作中很容易出现的问题,举个例子,假如你编写了一段在特定条件下才会执行的代码,另外一个程序员修改了这段代码,但由于没有达到特定条件,程序没有执行,他并不知道可能产生的bug。这时,有单元测试做保障的话,如果出现问题,相应的case就会失败,并及时通知你问题所在。

  • Testing Forces You to Slow Down and Think

当添加新功能或对已有代码进行重构时,事先编写好的单元测试会迫使你停下来思考正在编写的代码是否会达到预期结果,这样你就会更注意提高代码质量,而不是一味的追求完成任务了。

  • Testing Makes Development Faster

果有良好的单元测试做保障,你可以在最初的开发中只保证你所负责的一些接口的功能正确性,而不需要刻意关注这些接口的内部实现细节,这样会大大提高最初实现功能时的效率。而且在后续的维护和接口内部算法优化时,也不用害怕破坏整个接口的功能,单元测试会帮助你发现并解决问题。



原文链接

如需转载该篇文章,请注明来自“搜狗测试”


这篇关于编写单元测试的10个Reason的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/620470

相关文章

利用Python编写一个简单的聊天机器人

《利用Python编写一个简单的聊天机器人》这篇文章主要为大家详细介绍了如何利用Python编写一个简单的聊天机器人,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 使用 python 编写一个简单的聊天机器人可以从最基础的逻辑开始,然后逐步加入更复杂的功能。这里我们将先实现一个简单的

使用PyQt5编写一个简单的取色器

《使用PyQt5编写一个简单的取色器》:本文主要介绍PyQt5搭建的一个取色器,一共写了两款应用,一款使用快捷键捕获鼠标附近图像的RGB和16进制颜色编码,一款跟随鼠标刷新图像的RGB和16... 目录取色器1取色器2PyQt5搭建的一个取色器,一共写了两款应用,一款使用快捷键捕获鼠标附近图像的RGB和16

使用Java编写一个文件批量重命名工具

《使用Java编写一个文件批量重命名工具》这篇文章主要为大家详细介绍了如何使用Java编写一个文件批量重命名工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录背景处理1. 文件夹检查与遍历2. 批量重命名3. 输出配置代码片段完整代码背景在开发移动应用时,UI设计通常会提供不

如何编写Linux PCIe设备驱动器 之二

如何编写Linux PCIe设备驱动器 之二 功能(capability)集功能(capability)APIs通过pci_bus_read_config完成功能存取功能APIs参数pos常量值PCI功能结构 PCI功能IDMSI功能电源功率管理功能 功能(capability)集 功能(capability)APIs int pcie_capability_read_wo

springboot+maven搭建的项目,集成单元测试

springboot+maven搭建的项目,集成单元测试 1.在pom.xml文件中引入单元测试的依赖包 <!--单元测试依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></depen

Wondows dos下怎么编写bat批处理文件

最近搞php,在运行时,以Nginx+php-cgi.exe方式运行Wordpress项目 打开dos,先cd到php-cgi.exe文件当前目录下执行启动命令:php-cgi.exe -b 127.0.0.1:9001再打开一个dos,再cd到nginx.exe文件当前目录下执行启动命令:start nginx 大概过程要经过这些步骤,觉得很麻烦,就学下怎么编写一个bat文件,以双击运行代替

用Python编写倒计时程序:详细教程

目录 引言 环境准备 基本概念 代码实现 步骤一:导入必要的库 步骤二:获取用户输入 步骤三:实现倒计时逻辑 步骤四:整合代码 运行程序 高级功能 扩展功能示例:支持分钟和小时输入 扩展功能示例:图形用户界面 (GUI) 总结 引言 倒计时程序是一个非常常见的小工具,广泛用于各种应用场景中,例如考试时间提醒、烹饪计时器、会议倒计时等。Python 作为一种

PowerMock 单元测试总结与常见坑解决方案

PowerMock 单元测试总结与常见坑解决方案 官方文档: PowerMock GitHub PowerMock 在单元测试中能够帮助我们解决静态类、final 方法、私有方法等无法轻易 mock 的问题。下面是我在实际使用 PowerMock 时踩过的一些坑,并结合 PowerMock 的一些方法进行总结。 基本依赖和设置 在 Maven 中添加 PowerMock 依赖。在测试

【Spring boot】编写代码及测试用例入门之 Hello Spring boot _踩坑记

先贴下目录: 这是我从 start.spring.io 里下载的依赖Web的模板 // DemoApplication.javapackage com.abloume.springboot.blog.demo;import org.springframework.boot.SpringApplication;import org.springframework.boot.autocon

windows下使用vscode编写运行以及调试C/C++

vscode支持类似于vs的断点调试c/c++,也可以直接编译&运行c/c++ 先是编译运行 c/c++的方法                              微软官方起初设定的科学做法(这也是现在的科学做法)是通过在vscode集成控制台写命令行的方式来实现编译运行程序的,但也可以通过code runner插件来简化步骤,实现一键编译执行 但无论是什么方法,因为vscod