2016-05-11 42 views
5

Tôi đang viết một trường hợp thử nghiệm JUnit cho một phương thức để có được mức độ phù hợp của Đường thẳng và Chi nhánh. Phương pháp được kiểm tra gọi phương thức khác là loại Boolean và tôi không thể bao gồm phần đó vì trên báo cáo Cobertura dòng sau hiển thị màu đỏ.Cách kiểm tra Phương thức có kiểu trả về Boolean trong Java với JUnit

if (getLoggingHandler().isGeneralDebugEnabled()) 

Phương pháp thử:

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

Có cách nào để trang trải getLoggingHandler().isGeneralDebugEnabled() này?

Cảm ơn,

Trả lời

3

Bạn có thể định nghĩa một mô hình và sau đó buộc các giá trị để trở về đúng khi getLoggingHandler().isGeneralDebugEnabled() được gọi

Đây là những gì mà sẽ trông như thế trong mã:

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

Cách khác, nếu setter cho generalDebugEnabled có sẵn, bạn có thể làm điều gì đó như:

@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

Bạn là Blake tuyệt vời. Mockito đã giúp tôi và bây giờ nó được bảo hiểm. Cảm ơn bạn rất nhiều. –

Các vấn đề liên quan