Абстрагирование тестового класса

У меня сейчас есть несколько тестов, которые используют 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();
    }
}

Как я мог сделать что-то вроде вышеперечисленного, что действительно сработало? Это дает мне несогласованные кадры карты стека

EDIT: Спасибо за ваш ответ. На самом деле моя проблема была связана с тем, что я использовал версию PowerMock, несовместимую с java 7. Тем не менее, ваше указание будет полезно.


person roblabla    schedule 17.03.2013    source источник


Ответы (1)


Конечно, это возможно. Если вы поместите аннотацию @Before к методу в базовом классе, он будет запускаться в начале каждого теста в любом подклассе. Как вариант, вы можете отложить это в какой-нибудь фабричный класс, который используется во всех ваших тестах.

person Dawood ibn Kareem    schedule 17.03.2013
comment
Придется ли вам поместить @PrepareForTest в абстрактный класс? - person roblabla; 19.03.2013