我是一名测试软件工程师,我正在尝试编写可以替换生产端方法的代码,以便测试可以执行这些代码。基本上,我不想为了可测试性而修改生产代码。
这是一个简单的场景:
public class Foo {
public static void foo() {
printA();
}
public static void printA() {
System.out.println("A");
}
public static void printB() {
System.out.println("B");
}
}
public class Foobar {
public Foobar() {
}
public void test() {
Foo.foo();
}
public static void main(String[] args) {
//Try changing the method here
new Foobar().test();
}
}
如您所见,当 main 执行时,它将打印“A”,因为它在静态方法 foo() 上调用方法 printA。现在在运行时,有没有一种方法可以注入或修改,以便 foo 调用 printB 而不是 printA?
谢谢大家的帮助!