2016-02-19 211 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被有效創建

相關問題