我们知道,测试驱动开发(TDD)的基本思想就是在开发功能代码之前,先编写测试代码。也就是说在明确要开发某个功能后,首先思考如何对这个功能进行测试,并完成测试代码的编写,然后编写相关的代码满足这些测试用例。再循环进行添加其他功能,直到完全部功能的开发。开发过程如下图,在1~7中循序渐进。
最近,在公司一个支付系统的接口开发中,我按照上述方法进行了一次TDD的开发尝试。具体实现的功能是:解析渠道商返回的业务参数。首先,我整理出了TODO列表如下,
TODOs:
1)参数完整与格式校验
2)验证签名
3)参数正确性校验
4)通知状态校验
5)正确解析参数与返回
然后,开始迭代式的演进开发,
•循环一(参数完整与格式校验):
1、编写测试用例
1)参数完全正确用例
@Test
public void parseNotifyParamsOk() {
Map<String, String> notifyMap = new HashMap<String, String>();
//我们验证的部分
notifyMap.put("order_id", "123456789");
notifyMap.put("result", "Y");
notifyMap.put("amount", "10");
notifyMap.put("version_id", "2.0");
notifyMap.put("order_date", "20100512");
notifyMap.put("result", "Y");
notifyMap.put("amount", "1");
notifyMap.put("currency", "rm