2016-05-31 14 views
0

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

+3

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. –

+0

@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. –

+2

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

Antwort

0
path = path.replaceAll(Constants.CONTEXT_PATH_ROS_PRODUCER_PROCESSOR, "") 

wird eine Nullpointer werfen, wenn Pfad null ist.

Um dies zu vermeiden, sollten Sie die Methode umgestalten und auf Null prüfen, bevor eine Methode für ein Nullobjekt aufgerufen wird.

+0

Danke Kofislaper. Ich denke, ich muss so etwas tun. –