gpt4 book ai didi

java - 模拟 protected 构造函数

转载 作者:行者123 更新时间:2023-11-29 08:31:03 25 4
gpt4 key购买 nike

我想模拟具有 protected 构造函数super() 调用。

为此,我使用“PowerMockito.suppress”但它不起作用(代码调用 super 构造函数并抛出 runtimeException)。

如何模拟 super call(),使其什么都不做。

    public class FooClass {

public void someMethod(){
String arg1 = "arg1";
Integer arg2 = 123;
ExtendedClass extendedClass = new ExtendedClass(arg1, arg2);
}
}

public class SuperClass {
protected SuperClass(String arg1, Integer arg2) {throw new RuntimeException();}
}

public class ExtendedClass extends SuperClass{

public ExtendedClass(String arg1, Integer arg2){
super(arg1, arg2);
}
}

@RunWith(PowerMockRunner.class)
@PowerMockRunnerDelegate(MockitoJUnitRunner.class)
@PowerMockIgnore({"javax.management.*", "org.apache.http.conn.ssl.*", "com.amazonaws.http.conn.ssl.*", "javax.net.ssl.*"})
@PrepareForTest({SuperClass.class})
public class TestClass extends TestCase{

@InjectMocks
FooClass fooClass = new FooClass();

@Test
public void test(){
PowerMockito.suppress(PowerMockito.constructor(SuperClass.class, String.class, Integer.class));
fooClass.someMethod();
}
}

enter image description here

最佳答案

您必须为测试准备 ExtendedClass 而不是 SuperClass。

改变

 @PrepareForTest({SuperClass.class})

PowerMockito.suppress(PowerMockito.constructor(SuperClass.class, String.class, Integer.class));

 @PrepareForTest({ExtendedClass.class})

PowerMockito.suppress(PowerMockito.constructor(ExtendedClass.class, String.class, Integer.class));

关于java - 模拟 protected 构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48188510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com