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 )。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200115A09DWC00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券