如果类的构造函数受到保护,那么当我执行测试用例时,我该怎么做才能使用EasyMock或PowerMock构建对象。这是我的源代码:
protected TibOperationProxy(SAPApplication sdkApp, String classRef, String getOperationName, String rpcRef, SAPReqRespImpl sapClient)
throws MException {
super(sdkApp, classRef, getOperationName, rpcRef);
this.sdkApp = sdkApp;
this.client = sapClient;
}
答案 0 :(得分:2)
您有powerMock whitebox类可以提供帮助:
TibOperationProxy proxy = org.powermock.reflect.Whitebox.invokeConstructor(TibOperationProxy.class, sdkApp, classRef, getOperationName, rpcRef, sapClient);
一个额外的样本,假设我们有这个类:
public class WhiteBoxTest {
private final String name;
private WhiteBoxTest (String name) {
this.name = name;
}
public String getName () {
return this.name;
}
}
另一个类的主要方法有效:
WhiteBoxTest whitebox = Whitebox.invokeConstructor (WhiteBoxTest.class,
new Class[] { String.class }, new Object[] { "hello world" });
System.out.println (whitebox.getName ());
答案 1 :(得分:2)
如果类具有受保护的构造函数,则该构造函数仅用于派生类。也许这个类是一个抽象类?为什么不只有一个测试派生类?