2017-02-28 89 views
0

我是新來的單元測試,最近我使用探查器填充不同的指標取決於使用if-else語句的不同條件。我已經寫了一個單元測試來檢查是否正確的度量值被填充。但我得到Incompatible return value type錯誤。代碼段如下所示:不兼容的返回值類型

ProfilerObject1 mockObject = ctrl.createMock(ProfilerObject1.class); 
EasyMock.expect(ProfilerObject2.func1()).andReturn(mockObject); 
PopulateMetric(m1); 
EasyMock.expectLastCall().once(); 
control.replay(); 

我m到處在第2行(EasyMock.expect呼叫)不兼容的返回值的錯誤,而該函數返回類型ProfilerObject1的對象。我不知道爲什麼我會得到這個錯誤。

任何幫助真的不勝感激。 TIA

PS:我在2個不同的地方使用這個片段,在第二個地方給出no last call on mock available錯誤。這讓我更加困惑。

回答

0

您正在設置靜態方法調用的期望值。 EasyMock不支持它。要嘲笑靜態方法,你應該使用PowerMock和EasyMock。請查看下面的示例以瞭解如何操作。

@RunWith(PowerMockRunner.class) 
@PrepareForTest({ ProfilerObject2.class }) 
public class TestClass { 

    @Test 
    public void test() { 

     PowerMock.mockStatic(ProfilerObject2.class); 
     ProfilerObject1 mockObject = ctrl.createMock(ProfilerObject1.class); 
     EasyMock.expect(ProfilerObject2.func1()).andReturn(mockObject); 
     // your rest of the code goes here 
     PowerMock.replayAll(); 

    } 

}