测试驱动开发-2

时间:2021-09-16 13:14:08   收藏:0   阅读:30

2. 变质的对象

测试驱动开发的总体流程如下:

  1. 写一个测试程序。
  2. 让测试程序运行。
  3. 编写合格的代码。

计划清单(to-do list)

当瑞士法郎与美元的兑换率为 2:1 的时候,5 美元 + 10 瑞士法郎 = 10 美元

5 美元 * 2 = 10 美元

将 "amount" 定义为私有

Dollar 类有副作用吗?

钱数必须为整数?

在 Dollar 对象上施加一个操作后,Dollar 对象改变了。假设代码是:

public void testMultiplication() {
    Dollar five = new Dollar(5);
    five.times(2);
    assertEquals(10, five.amount);
    five.times(3);
    assertEquals(15, five.amount);
}

第一次调用 times() 函数后,five 已经不再是 5 了,它实际上是 10。如果我们从 times() 函数返回一个新对象,那么我们可以多次对原来的 five 进行操作,但不会让它发生丝毫变化。

public void testMultiplication() {
    Dollar five = new Dollar(5);
    Dollar product = five.times(2);
    assertEquals(10, product.amount);
    five.times(3);
    assertEquals(15, product.amount);
}

改变 Dollar.times() 函数声明,让新的测试程序编译通过。

Dollar times(int multiplier) {
    amount *= multiplier;
    return null;
}

测试程序可以编译了,但无法运行。需要返回一个新的带有正确的 amount 值的 Dollar 对象:

Dollar times(int multiplier) {
    return new Dollar(amount * multiplier);
}

测试程序运行通过,下面是尽快使测试程序可运行的三条策略:

本章工作回顾:

原文:https://www.cnblogs.com/python-beginner/p/15265500.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!