java我们可以使用powermock模拟第二个对象的创建吗
我们可以使用下面的代码行使用powermock模拟对象创建:
MyClass myObj = getMyObj();
PowerMockito.whenNew(MyClass.class).withAnyArguments().thenReturn(myObj);
现在在我编写测试用例的课堂上,我有这样的逻辑:
public class TestClass {
public void testMethod() {
MyClass obj = new MyClass();
boolean flag = doSomeOperation();
if(flag) {
MyClass obj1 = new MyClass();
//doSomeOtherOp();
}
}
}
这里我想模拟第二个对象创建obj1
,是否可以使用powermock来控制要模拟的对象。这里我不想模拟第一个对象obj
# 1 楼答案
我认为这很简单:
但不幸的是,虽然链接在其他上下文中是可能的,但PowerMockito似乎不允许这样做
(大概是
只是很好地打印
ab
!)所以我现在能给出的唯一答案是:你写了很难测试的代码。考虑不要那样做。
与其依赖于对
new()
的PowerMock-to-mock调用,不如后退一步,改变设计。例如,在生产代码中使用工厂。因此,与其直接调用new()
,不如直接向工厂请求新实例。而且,无需PowerMock(ito)即可轻松模拟该工厂