Ich schreibe einen Testfall für eine Methode mit JUnit
und ich versuche, eine null
Bedingung für eine bessere Zweigabdeckung abzudecken. Das Problem ist, wenn ich null
als ein Argument übergebe, das der Testfall NullPointerException
wirft, der offensichtlich ist, aber dann würde ich die Zweigabdeckung für den Null
Zustand abdecken. path
ist ein String
Parameter und ich möchte es in if(path != null && path.length() > 0)
abdecken. Ich habe keinen kompletten Testfall geschrieben, aber ich bin verwirrt, wie man einen für null
Zustand schreibt.So erhalten Sie eine bessere Zweigabdeckung mit Nullwert
Methode im Test
public String translateWebContextPathToVersionNo(String path) {
path = path.replaceAll(Constants.CONTEXT_PATH_ROS_PRODUCER_PROCESSOR, "");
path = path.replaceAll(Constants.CONTEXT_PATH_ROS_CONSUMER_PROCESSOR, "");
if(path != null && path.length() > 0) {
String endChar = path.substring(path.length() - 1);
if(endChar.matches(pattern)) {
path = path.substring(0, path.length() -1);
}
}
return path;
}
JUnit-Test
@Test
public void testTranslateWebContextPathToVersionNo() throws Exception {
TestQuartzROSServiceContextUtil util = new TestQuartzROSServiceContextUtil();
util.translateWebContextPathToVersionNo(null);
}
Vielen Dank im Voraus
Warum überprüfen Sie, ob es null ist, wenn Sie wissen, dass es nicht sein kann? Verschieben Sie den Null-Check entweder an den Anfang der Methode oder streichen Sie ihn. –
@Mark und Tom. Dies ist der Grund, warum ich diese Frage gestellt habe. Ich weiß, es ist Verhalten, aber ich muss noch eine 'JUnit' dafür schreiben und ich bekomme 50% Zweigabdeckung für den' Pfad! = Null' und ich wollte wissen, was passiert, wenn es 'null' ist. –
Wie @MarkChorley sagte, 'path' ** kann nicht ** in dieser Zeile null sein. Wenn Sie eine Nulleingabe abfangen möchten, müsste sie am Anfang der Methode stehen. – shmosel