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
Perfekt, es hat funktioniert. Stört es Sie zu erklären? –
Ich habe meine Antwort bearbeitet, um mehr Erklärungen zu geben - ist das jetzt klarer? – christophetd
Ja, ich habe es verstanden. Danke Chris. –