这个测试项目需要引用Console项目。
需求
有这样一份报表:
现在想要做成支持多币种的:
这里还提供了汇率:
目标就是产生第二张图那样的报表。
开始操作
我们需要做哪些工作?
让两种币种的钱数可以进行加法操作,并通过给定的汇率算出结果。
让股票单价可以乘以股票数并得出总额。
上面是一个待办问题列表(To-Do List)。我们就关注于这个待办列表即可。
列表里的问题应该是逐个解决的,解决完一个划掉一个;如果有新问题,就在后边加上一条。
编写测试
下面我们开始,先不建立对象,先写测试:
让编译通过这里有很多问题,编译也无法通过,这些问题我们也是一个一个来解决。
1. 首先,没有Dollar这个类,那就建立Dollar这个类:
第一个问题解决了。
2. 没有相应的构造函数,那就建立构造函数:
又解决了一个问题!
3. 没有Times()这个方法,那就建立该方法:
又解决了一个问题!
4. 没有Amount属性,建立该属性:
编译问题都解决了!!
看一下测试方法:
编译错误肯定是没有了。
测试Fail
然后跑测试:
不出意料肯定会Fail。
让测试通过
现在有了具体的这个Fail的测试,我们现在的任务就是让该测试变成Pass,而不是实现多币种报表,先让这个测试通过,再慢慢让其它测试通过。
您可能不喜欢这样,但是现在的目标不是做出完美的解决方案,目标就是让这个测试通过,所以这时候代码可能很烂:
我写死了数字10。
然后再跑测试:
测试Pass了!!
重构,移除重复
别着急,周期还没结束。
现在,我们需要移除重复。但是重复在哪?
通常你看到的重复是指代码的重复,这里是指测试中的数据和代码中数据的重复。
这个10是哪来的? 它实际上是: