我有一些无法更改的遗留代码,但是我需要进行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()调用尝试建立数据库连接,并尝试调用其他服务。我实际上正在测试的代码不需要任何这些。
最佳答案
您可以在测试中扩展类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() {
}
}
}