2013-03-17 106 views
0

我現在有幾個測試使用PowerMock和Mockito來「模擬對象」。問題是,所有這些測試一遍又一遍地創建相同的模擬。是否有可能從我的測試派生出一個抽象類來預先嘲笑這些對象?抽象測試類

例子:

public abstract class AbstractTest { 
    public void initialize() { 
     PowerMockito.mockStatic(StaticMock.class); 
     when(StaticMock.doSomething()).thenReturn(true); 
    } 
} 

@RunWith(PowerMockRunner.class) 
@PrepareForTest(StaticMock.class) // BanManager.class contains static methods 
public class Test extends AbstractTest { 

    @SuppressWarnings("serial") 
    @Test 
    public void testWithPerms() { 
     initialize(); 
     SomeObject obj = new SomeObject(); 
     obj.doSomething(); 
     PowerMockito.verifyStatic(); 
     Static.verifyIsCalled(); 
    } 
} 

我怎麼會做這樣的事情上面,實際上工作?這給了我不一致的堆棧圖框架

編輯:謝謝你的回答。我的問題實際上是由於我使用與Java 7不兼容的PowerMock版本。但是,您的指示會有所幫助。

回答

4

當然這是可能的。如果將@Before註釋放在基類中的某個方法上,它將在任何子類的每個測試開始時運行。或者,你可以把它放在某種用於所有測試的工廠類中。

+0

您是否必須將@PrepareForTest放在抽象類上? – roblabla 2013-03-18 22:12:04