2016-05-17 6 views
0

Ich schreibe eine JUnit, um die Linien- und Zweigabdeckung einer Methode zu verbessern. Es gibt nur noch eine Linie in der zu testenden Methode, die ich versuche abzudecken, aber irgendwie wird sie nicht abgedeckt. Ich habe versucht, Mockito verwenden, um es einfacher zu machen, aber immer noch if(o != null) kommt als rot in Cobertura Bericht.Testen einer Methode mit JUnit und Mockito, um die Zweigabdeckung zu verbessern

Methode im Test:

public String handleParams(Map<String, Object> params) { 
    StringBuilder sb = new StringBuilder(); 

    if(params != null) { 
     Set<String> keys = params.keySet(); 
     for(String s : keys) { 
      Object o = params.get(s); 
      if(o != null) { 
       if(sb.length() > 0) { 
        sb.append(","); 
       } 
       sb.append(s + "-" + o.toString()); 
      } 
     } 
    } 

    return sb.toString(); 
} 

JUnit-Test:

@Test 
public void testHandleParams() throws Exception { 
    Map<String, Object> params = new HashMap<>(); 
    params.put("Object1", new Object()); 
    params.put("Object2", new Object()); 

    TestWSAuditHandler handler = new TestWSAuditHandler(); 
    String handle = handler.handleParams(params); 

    assertNotNull(params); 
    assertEquals(2, params.size()); 
    assertTrue(handle instanceof String); 

    // Null Condition 
    params = null; 

    handler = new TestWSAuditHandler(); 
    handle = handler.handleParams(params); 

    assertNull(params); 
    assertEquals(null, params); 
    assertTrue(handle instanceof String); 

    // Mocking params 
    params = Mockito.mock(Map.class); 
    Mockito.when(params.get(Mockito.anyString())).thenReturn(null); 

    handler = new TestWSAuditHandler(); 
    handle = handler.handleParams(params); 
} 

wissen wollen, wie ich o == null

Vielen Dank im Voraus

Antwort

1

Wie wäre es machen:

params.put("Object3", null); 

vor Ihrem Anruf an handleParams?

diese Weise, wenn Sie params.get("Object3") in handleParams aufrufen, werden Sie den Wert auf die Taste Object3 zugeordnet bekommen, die in diesem Fall null ist.

+0

Perfekt, es hat funktioniert. Stört es Sie zu erklären? –

+0

Ich habe meine Antwort bearbeitet, um mehr Erklärungen zu geben - ist das jetzt klarer? – christophetd

+0

Ja, ich habe es verstanden. Danke Chris. –