抽象测试类

时间:2013-03-17 00:36:39

标签: java unit-testing mockito abstraction powermock

我现在有一些测试使用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();
    }
}

我怎么能做上面那些实际工作的事情?这给了我不一致的stackmap帧

编辑:感谢您的回答。我的问题实际上是由于我使用的是与java 7不兼容的PowerMock版本。不过,您的指示会有所帮助。

1 个答案:

答案 0 :(得分:4)

当然这是可能的。如果将@Before批注放在基类中的方法上,它将在任何子类中的每个测试开始时运行。或者,您可以将其放在某些工厂类中,该工厂类用于所有测试。