У меня есть следующий класс:
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» вместо «MOCK». Есть идеи почему? Я делаю что-то неправильно? Я попытался объявить мой фиктивный класс также абстрактным, но безрезультатно.
Редактировать Обратите внимание, что общедоступный метод приводит к тому, что тест выполняется без проблем ... это странно, потому что с JMockit вы должны иметь возможность имитировать методы любой области действия.
Ответ Только публичный метод должен быть публичным, вы можете оставить оригинальный метод как есть.