У меня есть следующий класс:Моментальные непубличные статические методы в абстрактных классах с JMockit?
public abstract class AbstractParent {
static String method() {
return "OriginalOutput";
}
}
Я хочу издеваться этот метод. Я решил использовать JMockit. Поэтому я создать макет класс:
public class MockParent {
static String method() {
return "MOCK";
}
}
И мой тестовый код выглядит следующим образом:
public class RealParentTest {
@Before
public void setUp() throws Exception {
Mockit.redefineMethods(AbstractParent.class, MockParent.class);
}
@Test
public void testMethod() {
assertEquals(MockParent.method(),AbstractParent.method());
}
}
К сожалению, этот тест говорит, что AbstractParent возвращает «OriginalOutput» вместо «Мок». Любые идеи почему? Я делаю что-то неправильно? Я пробовал объявить свой макетный класс абстрактным, но безрезультатно.
Редактировать Обратите внимание, что создание метода public приводит к тому, что тест запускается без проблем ... это странно, потому что с JMockit вы должны быть в состоянии издеваться над методами любой области.
Ответа на этот вопрос Только метод mock должен быть общедоступным, вы можете оставить оригинальный метод как есть.
Просто для прохождения googler .. принятый ответ теперь устарел, поскольку Mockit.redefineMethods устарел ... Я пытаюсь найти правильный. – 2010-12-14 13:06:01