Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: roblablaОтветов: 1

У меня сейчас есть несколько тестов, которые используют 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. Тем не менее, ваше указание будет полезно.

javaunit-testingmockitoabstractionpowermock

Ответы

Ответ 1 · рейтинг 4 · Dawood ibn Kareem

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы