2013-01-07 48 views
1

我使用PowerMock嘗試和嘲笑與靜態方法final類,但每當我的代碼調用MyClass.getInstance()返回nullPowermock不返回正確的對象靜態方法

在我的測試中,我已經標註的測試類

@RunWith(PowerMockRunner.class) 
@PrepareForTest(MyClass.class) 

在我的方法,使模擬我下面

suppressConstructor(MyClass.class); 
PowerMock.mockStatic(MyClass.class); 
mockClass = PowerMock.createMock(MyClass.class); 
expect(MyClass.getInstance()).andReturn(mockClass); 

應該PowerMock.createMock CREA te EasyMock課?

當我把這個在我的代碼(MyClass.getInstance()),它總是返回null但如果我通過測試類步驟變量mockClass被實例化。

回答

1

它看起來像你使用EasyMock嘲笑的方式。在調用getInstance()方法之前,您是否重播了MyClass?

PowerMock.replay(MyClass.class); 

從PowerMock MockStatic文檔:

使用PowerMock.mockStatic(ClassThatContainsStaticMethod.class)來模擬這一類的所有方法。 使用PowerMock.replay(ClassThatContainsStaticMethod.class)將類更改爲重放模式。 使用PowerMock.verify(ClassThatContainsStaticMethod.class)將類更改爲驗證模式。

+0

這確實是我重放'mockClass'而不是'MyClass.class'的問題 –