2016-02-19 299 views
0

我正在编写一个方法的JUnit测试用例,并且我得到了50%的分支覆盖率。我已经尝试了两种条件(空和空),但没有运气。被测JUnit测试与Cobertura覆盖率报告

方法:

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()); 
} 

的Cobertura没有覆盖,即使clientFilters == NULL

任何帮助,将不胜感激如果条件。 感谢

回答

1

要对这种方法100%的覆盖范围,你应该叫addFilter两次:

  1. 首次将创建clientFilters列表
  2. 第二次将使用现有的clientFilters

调用此方法两次将测试懒惰列表clientFilters被有效创建

相关问题