0
下面的代码:如何在私有静态方法中模拟第三方类?
public final class APIClient {
private static Identity identity = createIdentity();
private static Identity createIdentity() {
CredentialsProvider provider = new CredentialsProvider(API_USER);
Credentials creds = provider.getCredentials();
identity = new Identity();
identity.setAttribute(Identity.ACCESS_KEY, creds.getAccessKeyId());
identity.setAttribute(Identity.SECRET_KEY, creds.getSecretKey());
return identity;
}
}
我如何可以模拟一个CredentialsProvider
时,单元测试:
@Test
public void testCreateAPIClient() {
// mock a CredentialsProvider
client = new APIClient();
Assert.assertNotNull(client);
}
提前感谢!
你可以做的是创造一种新的方法,例如'createCredentialProviderInstance()',然后就嘲笑全班并重写方法创建实例 – Tuchkata
[如何测试具有私有方法,字段或内部类的类的可能的重复?](http://stackoverflow.com/questions/34571/how-to-test-a-class-that-has -private-methods-fields-or-inner-classes) – Raedwald
Tuchkata是正确的:你显示的代码真的很难测试。您应该将这些功能放入专门的工厂/供应商。当然,你仍然有PowerMock需要的第三方静态呼叫......但不要陷入同一陷阱;相反,请确保至少您自己的**代码是可测试的(请参阅https://www.youtube.com/playlist?list=PLD0011D00849E1B79以获得一些启发) – GhostCat