网站首页 > java教程 正文
说到单元测试,很多开发同学很容易忽略。甚至认为是测试才干的事情。千锋广州Java培训的老师需要在这里纠正一下,对于单元测试,维基百科中是这样描述的:
?单元测试又称为模块测试,是针对程序模块(软件设计中的至小单元)来进行正确性检验的测试工作。
结论:单元测试是正确性检验的测试工作。
那么做为一个解决error的开发小哥。可不能把错误扔给测试同学呀,这明显就是挖坑嘛。
哪些地方需要写单元测试?
在日常开发中,不要认为写单元测试带来了额外的工作。看似降低了开发效率。实际上,这是非常重要的。也能给后期维护带来好处。 大部分的bug也都能用单元测试测试出来。
以下是需要写单元测试的地方:
在Dao层,Service层中的每一个方法都确保单元测试的pass。
(我们通常使用Mybatis作为ORM框架,建议将SQL也能用数据库执行。这也是一种测试方式。)
在重要的算法,核心业务逻辑必须单元测试过。
在单元测试中:我们应尽量保持测试方法的原子性。也就是说,单元测试粒度越小越好。
为什么要写单元测试?
如果硬要说出写单元测试的好处?那实在是太多了。直接的好处,就是减少BUG了。
提高代码质量。
提高代码可读性。
对自己代码的一种负责。
……
在优秀的开源项目中,如Spring源码中。我们会发现有很多的单元测试。基本上每个方法都有单元测试。我们阅读到难以理解的代码时。运行一下单元测试,调试一下。也能很快理解!
怎么写单元测试?
在Java中,单元测试代码应该写在 src/test/java 目录下,单元测试资源应该放在src/test/resources下。平常用的较多的单元测试框架就属Junit了。目前新的Junit版本已经更新到了JUnit 5了。但需要JDK版本在1.8及以上才能运行。如果需要支持在1.7版本的JDK中运行。我们可以选择低版本的Junit。
单元测试的一点小建议
保持单元测试的独立性。为了确保单元测试稳定可靠且便于维护,单元测试用例之间决不能互相调用,也不能依赖执行的先后次序。
单元测试是可以重复执行的,不能受到外界环境的影响。
单元测试的基本目标:
语句覆盖率达到 70% ;核心模块的语句覆盖率和分支覆盖率都要达到 100%。
在设计评审阶段,开发人员需要和测试人员一起确定单元测试范围,单元测试建议覆盖所有测试用例( UC )。
猜你喜欢
- 2024-10-05 单元测试-(单元测试能发现约80的软件缺陷)
- 2024-10-05 Junit4入门之单元测试Junit介绍(junit4入门之单元测试junit介绍英文)
- 2024-10-05 五分钟技术趣谈 | Java常用的单元测试框架介绍
- 2024-10-05 「SpringBoot」 单元测试利器-Mockito
- 2024-10-05 如何使用Python进行单元测试(python单元测验答案)
- 2024-10-05 如何用TestNG进行java单元测试?(java中的test检测)
- 2024-10-05 干货篇-错过一次 错过一年!单元测试之Junit
- 2024-10-05 万字长文:一文详解单元测试干了什么
- 2024-10-05 一台不容错过的Java单元测试代码“永动机”
- 2024-10-05 新的单元测试工具已到位,Java程序员还不快来尝尝新?
你 发表评论:
欢迎- 最近发表
-
- 你真的会用 Java 中的线程池吗?多个企业级线程池工具类封装实践
- 线程池的实现原理、优点与风险、以及四种线程池实现
- Java线程池ThreadPoolExecutor实现原理剖析
- 深入分析线程池的实现原理(线程池是干嘛的)
- 一文搞懂JAVA线程池工作原理(java线程池的工作流程)
- Java线程池的工作原理(java线程池的实现原理)
- 5分钟读懂C#中TcpClient、TcpListener和Socket三个类的角色
- JVM对象的创建过程(jvm运行过程中创建的对象一般存放在方法区)
- 对象组成与Java内存模型JMM分析(java对象在内存中存储的结构)
- JVM对象内存分配详细过程(栈上分配->TLAB->老年代->Eden区)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)