Java 抽象测试类

Java 抽象测试类,java,unit-testing,mockito,abstraction,powermock,Java,Unit Testing,Mockito,Abstraction,Powermock,我现在有一些测试使用PowerMock和Mockito来“模拟对象”。问题是,所有这些测试都会一次又一次地创建相同的模拟。有没有可能有一个抽象类,我的测试从中派生出一个预模拟这些对象的抽象类 例如: public abstract class AbstractTest { public void initialize() { PowerMockito.mockStatic(StaticMock.class); when(StaticMock.doSomet

我现在有一些测试使用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();
    }
}
我怎么能做像上面这样的事情呢?这给了我不一致的堆栈映射帧


编辑:谢谢您的回答。我的问题实际上是由于我使用了与Java7不兼容的PowerMock版本。尽管如此,您的指示还是会有帮助的。

当然这是可能的。如果将@Before注释放在基类中的方法上,它将在任何子类的每个测试开始时运行。或者,您可以在所有测试中使用的某种工厂类中推迟此操作。

当然这是可能的。如果将@Before注释放在基类中的方法上,它将在任何子类的每个测试开始时运行。或者,您可以在所有测试中使用的某种工厂类中推迟此操作。

您是否必须在抽象类中添加@PrepareForTest?是否必须在抽象类中添加@PrepareForTest?