美文网首页Android知识Android开发Android技术知识
单元测试:通过简单例子理解测试驱动开发(TDD)

单元测试:通过简单例子理解测试驱动开发(TDD)

作者: ImWiki | 来源:发表于2017-05-30 23:43 被阅读52次

通常我们设计一个应用程序,并且快速创建单元测试来验证我们的设计,在我们编写这些测试时,这些测试也可以帮助改善了我最初的设计。随着我们编写越来越多的单元测试,正反馈的良性循环也会鼓励我们尽早地编写单元测试。当我们设计并实现时,就自然地想要知道我们将会如何来测试一个类。基于这一方法论,越来越多的开发者正从利于测试跃迁到测试驱动开发。

通过简单例子来理解TDD

下面我们就从"保留两位小数,不能四舍五入"的例子理解什么是测试驱动开发。

问题:

编写一个方法,输入double参数,返回保留两位小数,不能四舍五入的String。

第一步:编写测试用例

按照我们预期的结果,编写参数化的单元测试用例

@RunWith(value = Parameterized.class)
public class keep2DecimalParameterizedTest {
    private String expected;
    private double param0;
    @Parameterized.Parameters
    public static Collection<Object[]> getTestParameters() {
        return Arrays.asList(new Object[][]{
                {"1.00", 1.002},
                {"2.15", 2.156},
                {"3.14", 3.141}
        });
    }
    public keep2DecimalParameterizedTest(String expected, double param0) {
        this.expected = expected;
        this.param0 = param0;
    }
    @Test
    public void add() throws Exception {
        Assert.assertEquals(expected, Compute.keep2Decimal(param0));
    }
}

我们现在运行这个测试用例肯定是失败的,因为Compute.keep2Decimal()这个方法我们还没有实现,下面我们就要创建这个类和方法,并实现相关逻辑。

第二步:编写实现

根据测试用例实现该方法的功能

public class Compute {
    /*保留两位小数,不能四舍五入*/
    public static String keep2Decimal(double arg0) {
        return String.format("%.2f", arg0);
    }
}
第三步:运行测试

运行单元测试,发现参数化测试中的第二项失败了Compute.keep2Decimal(2.156),运行的结果是2.16,但是我们预期的结果是2.15

第四步:改进实现
public class Compute {
    /*保留两位小数,不能四舍五入*/
    public static String keep2Decimal(double arg0) {
        return String.format("%.2f", (int) (arg0 * 100) /100.0);
    }
}
第五步:重新测试

测试通过

上述例子分析

传统的开发周期是由以下环节组成的:编码、测试、(重复)、提交。开发者使用TDD后则做出了一个似乎很微小但是实际上却惊人有效的调整:测试、编码、(重复)、提交。测试推动了设计,并成为了方法的第一个客户。

相关文章

  • 单元测试:通过简单例子理解测试驱动开发(TDD)

    通常我们设计一个应用程序,并且快速创建单元测试来验证我们的设计,在我们编写这些测试时,这些测试也可以帮助改善了我最...

  • NodeJs单元测试

    本博客简要介绍NodeJs如何进行单元测试 单元测试类型 TDD:测试驱动开发TDD的原理是在开发功能代码之前,先...

  • 简洁代码--单元测试

    代码整洁之道笔记 [TOC] 单元测试 测试驱动开发 TDD三定律 在编写不能通过的单元测试前,不能编写生产代码。...

  • 初识TDD

    什么是TDD 本文所说的 TDD 指狭义上的 TDD,也就是「单元测试驱动开发」。 TDD 是敏捷开发中的一项核心...

  • Python 单元测试

    概念 如果你听说过“测试驱动开发”(TDD:Test-Driven Development),单元测试就不陌生。 ...

  • 开发完了,如何做产品的测试用例?

    前言 如果你听说过“测试驱动开发”(TDD:Test-Driven Development),单元测试就不陌生。 ...

  • Kata-准备工作

    TDD: TDD是测试驱动开发的简称,是一种增量式软件开发技术,简单来说即使在没有失败的单元测试的前提下不可以写产...

  • 关于TDD-测试驱动开发

    一、什么是TDD TDD即“测试驱动开发”,编程领域中指在编写实际生产代码之前,先编写测试用例(单元测试)...

  • 单元测试和集成测试业务应用程序

    本文主要通过小例子介绍下单元测试,集成测试,测试驱动开发等概念。 切入正文: 单元测试是通过写代码来测试代码的一个...

  • 前端动手开始试着写单元测试

    单元测试分为 TDD(测试驱动开发)和 BDD(行为驱动开发)两种类型两者的区别是驱动者、主导者不同 断言库 no...

网友评论

    本文标题:单元测试:通过简单例子理解测试驱动开发(TDD)

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