How to test a method with a boolean return type in Java using JUnit

I am writing a JUnit test case for the Line and Branch coverage method. The method under testing calls another method of type Boolean , and I cannot cover this part, because in the Cobertura report the next line is displayed in red.

 if (getLoggingHandler().isGeneralDebugEnabled()) 

Checked Method:

 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()); } 

Is there any way to cover this getLoggingHandler().isGeneralDebugEnabled() ?

Thanks,

+5
source share
1 answer

You can define the layout and then force it to return true when getLoggingHandler().isGeneralDebugEnabled() is called

Here's what it would look like in code:

 @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()); } 

Alternatively, if a typesetter for generalDebugEnabled is available, you can do something like:

 @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()); } 
+3
source

All Articles