我有一些无法更改的旧代码,但是我需要进行JUnit测试。我一直在尝试各种Mockito和PowerMockito用法,但无济于事。
抽象父项
package com.parent;
public abstract class Parent {
public Parent() {
}
protected void badMethod() {
//code
}
// public methods
}
公共儿童
package com.child;
public class Child extends Parent {
public void methodToTest() {
//code
badMethod();
//code
}
}
我需要测试的代码来自对badMethod()的调用。有没有办法存根,模拟或绕过badMethod()调用?子类中没有badMethod()的@Override。
badMethod()调用尝试建立数据库连接,并对其他服务进行调用。我实际上正在测试的代码不需要任何这些。
答案 0 :(得分:1)
您可以在测试中扩展类Child
,并在新类中“禁用” badMethod
。
public class YourTest {
@Test
public void testSomething() {
Child child = new ChildWithDisabledBadMethod();
child.methodToTest();
//put your assertions here
}
private static class ChildWithDisabledBadMethod extends Child {
protected void badMethod() {
}
}
}