技术开发 频道

Junit单元测试覆盖率分析

  重构测试代码实现百分百测试覆盖率

  我们总是希望做单元测试的时候,让代码的测试覆盖率尽可能的达到100%,所以我们需要重构测试代码。从分析得知,第40行虽然执行了27次,但是从来没有测试if的判断条件为true的情况,所以我们要添加测试用例,测试isZero()返回为true的情况!因此,我们修改测试代码MoneyTest.java文件,在前边初始化地方加上一个Money实例,如下: 

public class MoneyTest extends TestCase {

  
private Money f12CHF;

  
private Money f14CHF;

  
private Money f7USD;

  
private Money f21USD;

  
private Money f0USD;

  在setup方法里添加:

protected void setUp() {

  f12CHF
= new Money(12, "CHF");

  f14CHF
= new Money(14, "CHF");

  f7USD
= new Money( 7, "USD");

  f21USD
= new Money(21, "USD");

  f0USD
= new Money(0, "USD"); //sincky

  在最后加上一个测试用例:

 public void testMoneyEqualsZero() {

  assertTrue(
!f0USD.equals(null));

  IMoney equalMoney
= new Money(0, "CHF");

  assertTrue(f0USD.equals(equalMoney));

  }

  之后,我们重新编译,测试,创建报告,即执行下列命令:

 >ant clean

  
>ant clover compile

  
>ant test

  
>ant report

  这时候再打开新的html报告,看到如下效果覆盖率已经到达100%:

  完毕,如果能进展到这一步,相信你已经对使用junit、ant、clover做java的单元测试,已经到了一个新的飞越!如果有兴趣,你还可以把junit报告和clover报告一并输出,以更好的为企业开发中使用这种工作模式!

  文章源码均来自clover网站,本人稍做修改。

  写在后面的话:目前国内单元测试尚在起步阶段,由于工作量大,耗时耗成本,很多公司都省去该环节;但是使用一些先进的技术,对源代码一些关键的类进行单元测试是可行的,也是必要的;希望本文对测试与java开发界朋友有所收获。

0
相关文章