使用Cobertura覆盖率报告进行JUnit测试

时间:2016-02-19 19:43:04

标签: java junit cobertura

我正在为一个方法编写一个JUnit测试用例,并且我获得了50%的分支覆盖率。我已经尝试了两种情况(Null和!Null)但没有运气。

待测方法:

private List<IClientFilter> clientFilters;
public void addFilter( IClientFilter cf ) {
    if( clientFilters == null ) {
        clientFilters = new ArrayList<IClientFilter>();
    }
    clientFilters.add( cf );
}

JUnit测试:

@Test
public void testAddFilter() throws ESignatureClientException, Exception {
    IClientFilter clientFilter = new ESignatureClientFilter();

    new ClientConfiguration().addFilter(clientFilter);

    List<IClientFilter> list = new ArrayList<>();
    list.add(clientFilter);

    assertNotNull(list);
    assertFalse(list.isEmpty());
    assertEquals(1, list.size());
}

即使clientFilters == null

,Cobertura也没有覆盖if条件

任何帮助将不胜感激。 感谢

1 个答案:

答案 0 :(得分:1)

要对此方法有100%的覆盖率,您应该拨打addFilter两次:

  1. 第一次将创建clientFilters列表
  2. 第二次将使用现有的clientFilters
  3. 调用此方法两次将测试是否有效创建了惰性列表clientFilters