JMockit - частичное издевательство и издевательство над родителем
Я хотел бы протестировать (используя JMockit) класс, который выглядит следующим образом:
class MyClass extends ComplexParentClass {
public void testedMethod() {
...
}
private int complexPrivateMethod() {
...
}
}
Я не могу изменить класс. Проблема в том, что у ComplexParentClass есть сложный конструктор, что затрудняет его тестирование. Поэтому я хотел бы издеваться над родительским классом. Я также хотел бы издеваться над сложным частным методом. Но возможно ли что-то подобное?
Я попробовал следующее:
class MyClassTest {
@Tested
MyClass myClass;
// mock the parent
@Mocked
ComplexParentClass complexParentClass;
@Test
public void test() {
new Expectations(myClass) {{
// partially mock the private method
Deencapsulation.invoke(myClass, "complexPrivateMethod"); result = 0;
}};
myClass.testedMethod();
}
}
Это приводит к "уже издевательскому" исключению.
У кого-нибудь есть идеи, как к этому подойти?
1 ответ
Вы пробовали использовать макеты? Что-то вроде этого будет издеваться complexPrivateMethod
только:
@Test public void test() {
new MockUp<ComplexParentClass> () {
@Mock private int complexPrivateMethod() { return 0; }
};
//do something with MyClass
}