2016-05-11 7 views
5

Ich schreibe einen JUnit Testfall für eine Methode, um eine Linien- und Zweigabdeckung zu erhalten. Die zu testende Methode ruft eine andere Methode vom Typ Boolean auf, und ich kann diesen Teil nicht abdecken, da die folgende Zeile im Bericht Cobertura rot anzeigt.So testen Sie eine Methode mit einem booleschen Rückgabetyp in Java mit JUnit

if (getLoggingHandler().isGeneralDebugEnabled()) 

Methode im Test:

public void logMethodEndDebug(ILoggable l, String c, String m, String msg, Object... args) { 

    if (getLoggingHandler().isGeneralDebugEnabled()) { 
     String cf = ComponentUtils.createControlFrag(l, c); 
     StringBuilder sb = new StringBuilder(cf); 
     sb.append(m + StringConstants.SPACE + LogConstants.END); 
     sb.append(StringConstants.BRACE_OPEN + String.format(msg, args) + StringConstants.BRACE_CLOSE); 
     getLoggingHandler().handleGeneralDebug(sb.toString()); 
    } 

} 

JUnit-Test:

@Test 
public void testLogMethodStartDebug() throws Exception { 
    String var1 = "var1"; 
    String var2 = "var2"; 
    String var3 = "var3"; 
    Object[] object = new Object[] {"var4"}; 

    BaseComponent baseComponent = new BaseComponent(); 
    baseComponent.setLoggingHandler(new TestLoggingHandler()); 

    ILoggable loggable = new ServiceContext(); 

    baseComponent.logMethodEndDebug(loggable, var1, var2, var3, object); 

    assertTrue(baseComponent.getLoggingHandler().isGeneralDebugEnabled()); 
} 

Gibt es eine Möglichkeit, diese getLoggingHandler().isGeneralDebugEnabled() zu decken?

Danke,

Antwort

3

Sie ein Modell definieren und dann den Wert true zurück zu erzwingen, wenn getLoggingHandler().isGeneralDebugEnabled()

hier genannt wird, ist, was das wie in Code aussehen:

@Mock 
private TestLoggingHandler mockLoggingHandler; 

... 

@Test 
public void testLogMethodStartDebug() throws Exception { 
    String var1 = "var1"; 
    String var2 = "var2"; 
    String var3 = "var3"; 
    Object[] object = new Object[] {"var4"}; 

    when(mockLoggingHandler.isGeneralDebugEnabled()).thenReturn(true); 

    BaseComponent baseComponent = new BaseComponent(); 
    baseComponent.setLoggingHandler(mockLoggingHandler); 

    ILoggable loggable = new ServiceContext(); 

    baseComponent.logMethodEndDebug(loggable, var1, var2, var3, object); 

    assertTrue(baseComponent.getLoggingHandler().isGeneralDebugEnabled()); 
} 

Alternativ Wenn der Setter für generalDebugEnabled verfügbar ist, könnten Sie etwas tun wie:

@Test 
public void testLogMethodStartDebug() throws Exception { 
    String var1 = "var1"; 
    String var2 = "var2"; 
    String var3 = "var3"; 
    Object[] object = new Object[] {"var4"}; 

    BaseComponent baseComponent = new BaseComponent(); 
    baseComponent.setLoggingHandler(new TestLoggingHandler()); 
    baseComponent.getLoggingHandler().setGeneralDebugEnabled(true); 

    ILoggable loggable = new ServiceContext(); 

    baseComponent.logMethodEndDebug(loggable, var1, var2, var3, object); 

    assertTrue(baseComponent.getLoggingHandler().isGeneralDebugEnabled()); 
} 
+1

Sie sind fantastisch Blake. Mockito hat mir geholfen und jetzt ist es bedeckt. Ich danke dir sehr. –