美文网首页
如何做好单元测试

如何做好单元测试

作者: 薛云龙 | 来源:发表于2019-01-10 20:50 被阅读25次

在讨论这个问题之前,我们可以先试图看一下阿里巴巴开发手册中的单元测试规范。从中能看到很多强制的规则,可见单元测试的规范对于一个项目的重要性。

为什么要做单元测试?

  1. 通过单元测试,开发者能做到心中有数,知道我们的代码在大体逻辑上是没有bug的。如果开发者尚且不知道自己写的程序有没有问题,那么就没必要交由测试人员测试,这样必然会浪费双方大量的时间。
  2. 通过单元测试,我们可以尽可能的保证项目质量。这里质量不仅当下的项目稳定性,对于项目后续的迭代都会有一个良好的支持。
  3. 单元测试其实对于新人来说是入手项目的最佳利器。可能我们维护了一大堆的wiki文档,讲的什么详细。但是正如Linus Torvalds所说那样,Talk is cheap , show me the code。只有我们能真正跑一遍代码,一步一步debug程序,我们才能保证我们对这段代码逻辑的理解。(当然这不是给你不写文档的借口)
  4. 想要在测试面前昂首挺胸的走过吗?没错,写的一手好的单元测试,装的一手好13。

好的单元测试有哪些特点?

  1. 非人工校验:好的单元测试必然是需要通过自动化方式执行的,千万不要通过打印日志的方式来人眼判断对错。
  2. 独立测试:我们要让测试类是独立,即尽量不要依赖第三方存储或者数据。我们需要对数据存储(redis,mysql等)进行mock。并且将预先需要的数据造好,放到测试resource中,待测试程序运行时先行导入。这样才能保证即使我们项目环境发生了变化,这些单元测试同样是能够执行的;同样,我们的测试类应该能够给任何人的时候都能运行,而不能出现“只能在我的机器上运行”这种情况。
  3. 单一测试:一个测试类只测试一个功能,一个测试方法只测试一个方法。要满足单一原则。这样的做法能够保证单测出问题时直接确定问题所在。
  4. 更新和迭代:对于有代码更新时,我们要做好单元测试的及时更新,千万不要放一堆不能跑的测试用例在那里。
  5. 适当的重构:被测的代码要有可测试性,适当的重构将会让我们的测试更加容易。

常用单元测试mock方法

mock 代码逻辑:通过mock内部方法,我们可以设定一些方法的特定返回值,这样才能满足我们想要测试的条件了。比如我们常用的mock框架就有powermock等等。这些自行网上查阅。

mock redis:https://github.com/50onRed/mock-jedis

mock mysql : 在Spring环境下,我们通过H2数据库mock DataSource。当然,我们需要将建表sql和数据sql写入到H2数据中。另外我们需要注意的是H2数据并不支持事物,如果需要对事物进行测试的话,就用不了这种方式了。

@Configuration
public class TestingDataSourceConfig {

    @Bean
    @Primary
    public DataSource dataSource() {
        return new EmbeddedDatabaseBuilder()
            .generateUniqueName(true)
            .setType(H2)
            .setScriptEncoding("UTF-8")
            .ignoreFailedDrops(true)
            .addScript("schema.sql")
            .addScripts("user_data.sql", "country_data.sql")
            .build();
    }
}

相关文章

  • 如何做好单元测试

    在讨论这个问题之前,我们可以先试图看一下阿里巴巴开发手册中的单元测试规范。从中能看到很多强制的规则,可见单元测试的...

  • python拾遗9 - 测试、debug、性能分析

    单元测试 测试是非常重要的。但是,如果你不是负责测试的人员,一般你做好单元测试就已经足够了 什么是单元测试 单元测...

  • Golang测试

    如何编写好的单元测试 单元测试主要有两个方面: 编写测试方法 编写可测试代码 编写单元测试方法 单元测试特定案例的...

  • 第八章(一)

    8.1 单元测试 单元测试图片.png 测试方法之间不要有依赖关系。 因为我们的单元测试并不是仅仅使用一次。 如何...

  • 平安金融科技测试技术周报(第十一期)

    本期导读:原创文章继续带来单元测试之如何编写优秀的单元测试用例以及如何将dubbo封装成http协议。移动测试技术...

  • 单元测试

    本文主要侧重于如何在开发过程中使用XCode自带OCUnit框架来做单元测试 一、单元测试概述 什么是单元测试 单...

  • 写单测时,如何用Mock模拟取代原来的方法?

    序: 写单元测试就要做好隔离,节点、逻辑上做好隔离,接口上也做好隔离。想想,如果每次单测都要跑那么多接口,万一性能...

  • 如果做好单元测试

    TDD三定律 You must write a failing unit test before you writ...

  • 使用JaCoCo 分析Java 项目的单元测试覆盖率

    前言 随着敏捷开发的流行,编写单元测试已经成为业界共识。但如何来衡量单元测试的质量呢?有些管理者片面追求单元测试的...

  • iOS单元测试和UI测试

    单元测试不是一个小工程,需要多用些时间才能做好,不要希望通过这个文章就能掌握单元测试,这只是一个入门,需要自己动手...

网友评论

      本文标题:如何做好单元测试

      本文链接:https://www.haomeiwen.com/subject/awhnrqtx.html