1

如果类的构造函数受到保护,当我做测试用例时,我可以做些什么来使用 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;
}
4

2 回答 2

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 ());
于 2013-09-24T03:01:26.670 回答
2

如果该类具有受保护的构造函数,则该构造函数只能用于派生类。也许这个类是一个抽象类?为什么不只是有一个测试派生类?

于 2013-09-24T10:08:31.733 回答