意思不要拘泥于原来的TDD测试,可以对领域模型进行单独测试,使用基于领域事件的行为驱动方式,最后通过集成测试模拟客户端发出命令对领域层进行测试。
例如客户说,我要求软件有这么个功能,我一点按钮A,就能找出来去年参加审批但今年没参加的。我们就可以编写一个测试用例
List
throw new BusinessException();
}
然后客户又说要这么个功能,想要点一下按钮B,就能给已经是4星,并且连续3年都参加审批的企业升级成5星。可以再编写一个测试用例
void upStarWith4StarAnd3YearReview() {
throw new BusinessException();
}
这些用例一开始都是红的,只有全变绿了才能说功能开发完了。
当然软件内部的一些测试也不能少,最常见的像表单验证,值过滤,除数非零之类的,算不上关键功能但也必不可少。这些测试是为了今后维护时一旦改动结构,仍然能保持软件可用,比如有人想将一个数值类型的金额变为字符串类型,希望直接在前面加人民币符号或者美元符号,如果文档里没有描述出这个字段的类型,他也不知道能不能改,但一运行测试是红的,就知道这里必须要求一个数字类型了。