题记:新同学分享了“测试驱动”,第一次感觉测试驱动离自己那么近。因此开始尝试。记下自己的一小点想法。
1.一切从测试开始
不管在写复杂的代码,还是简单的代码,一切从测试开始。练习成自己编码的习惯。
自己的做法只能算是“伪测试驱动”,因为还是有详细的设计,但遵循此做法,对于需求的变更、代码存在的bug,导致编码修改的时候,心里是踏实的。
目前自己还不能感觉到对后期的维护会带来什么样的结果?
推荐《测试驱动开始》。
2.工具
junit、mockito、emma
junit,这是大家熟知的,学到新点:a。参数化测试 b。private方法测试(反射) c。runwith & Unite,组织测试单元
mockito,轻量的mock工具。测试中很麻烦的一个问题是:环境依赖,比如:web中依赖容器生成request对象。mockito很好的解决大部分问题(static类与private方法未能解决)。
emma,代码覆盖率检查工具,eclipse插件。效果:红色=未测试;黄色=测试不完整,只是部分逻辑;绿色=测试完整。(注意:不能绝对的追求覆盖率,一定要记住2/8原则,将主要的精力关注主要的逻辑)。
3.习惯
a。代码结构,3部分:prepare(包含mock)准备数据、action执行、assert验证
b。方法命名:被测试方法名$测试目的,如:run$ParameterIsNull
c。测试A类,有两个方法run()和prepare(),run方法调用prepare,且prepare执行非常耗时间。想要单独测试run()方法 ?
答案:B extends A,复写prepare方法(等于是mock prepare方法),单独的测试run方法逻辑。
d。持续写测试代码的习惯