因为要做个小项目,同组的同事都比较年轻,为了规范下代码,因此简单的写了下怎么提高代码质量,分享一下:
使用Mockito, 如果获取余额部分代码为:
public class PayServiceImpl implements PayService {
private BizPayService bizPayService;
@Override
public BigDecimal getBalance(String pin) {
try {
return bizPayService.getBalace("", 0);
} catch (BizVirtualPayException e) {
e.printStackTrace();
}
return null;
}
public void setBizPayService(BizPayService bizPayService) {
this.bizPayService = bizPayService;
}
}
bizPayService为一个dubbo接口,如果没有提供,那么测试代码如下:
public class PayServiceTest {
@Test
public void testGetBalance() throws BizVirtualPayException{
PayServiceImpl payService = new PayServiceImpl();
BizPayService bizPayService = mock(BizPayService.class);
when(bizPayService.getBalace("", 0)).thenReturn(new BigDecimal(20.00));
payService.setBizPayService(bizPayService);
Assert.assertEquals(20.00, payService.getBalance("").doubleValue(), 0);
}
}
静态代码缺陷检测工具
1. 对代码击右键,选择FindBugs->FindBugs,我们的开发环境中一般内置了该插件
2. 执行完成后,在代码根目录会显示找到的缺陷个数如图:
3. 打开对应的类,在左边框有如下的图标,点之:
4. 下面会出现具体的说明:
5. 对字段进行说明
Confidence 是造成缺陷的可能性, 一般为High的必须解决,这里是因为日志过滤其中使用了静态变量,而用实例方法对静态变量有可能导致并发的问题。
6. 要求
Confidence 为Hign的必须解决。
其他Confidence的必须理解其可能会造成的影响,确定不会影响系统运行时可以不解决
7. 常见问题
用==比较对象 我们出现过这个问题,用==比较Integer导致bug
比CheckStyle功能更强的静态代码检查工具,主要是检查一些日常编码中我们经常犯的错误,比如String,StringBuffer的滥用, 复杂度等
1. 右击代码
2. 如上左侧的小图标表示了级别, 带红x的必须解决, 其他的酌情而定
3. 常见问题
减少不用代码
减少复制粘贴来的大量不用代码。比如BizMessage中所使用到的APIUtils及JSONUtils 这两个类。 其中设计了JSON字符串的处理,但是实际上使用阿里巴巴的FastJSON可以直接满足要求,直接替换之,这样就不用为了这两个类写单元测试了。
在未他们写单元测试的时候才会发现他们的方法有大量没有使用的部分。
并且因为写单元测试进行覆盖率的增长是一件很麻烦的事情,会促进大家尽量写行数少的代码,以减少单元测试代码的工作量。
发现设计问题
在进行单元测试的时候难避免使用mock技术,当你发现一个类不好mock的时候,那么说明该类在设计上存在问题,具有不可测试性,这样的类应该修改。
原文:http://blog.csdn.net/three_man/article/details/46461251