如何解决无法使用 PowerMock 模拟静态方法
我使用 Cucumber 作为 Runner 类,并且在 Step Definition 类的方法中,我想模拟 jersey javax.ws.rs.client.ClientBuilder 类及其方法 newClient()。 当行 PowerMockito.when(ClientBuilder.newClient()).thenReturn(mockClient) 被调用时,它给出了异常 - “when() 需要一个参数,该参数必须是'模拟方法调用'”。
以下是仅包含必需信息的示例代码。
@RunWith(Cucumber.class)
@CucumberOptions(<different attributes>)
public class TestRunner{
//@BeforeClass method
}
@PrepareForTest(ClientBuilder.class) //Not sure if this works in a step definition class
public class Steps() {
public methodA() {
final Client client = Mockito.mock(Client.class);
PowerMockito.mockStatic(ClientBuilder.class);
PowerMockito.when(ClientBuilder.newClient()).thenReturn(client);
TestClass t = new TestClass();
t.initiateProcess();
}
}
public class TestClass {
public void initiateProcess(){
ActualClass ac = new ActualClass();
ac.consume();
}
}
public class ActualClass {
private Client client;
private WebTarget target;
public ActualClass(){
client=ClientBuilder.newClient();
target=client.target("url");
}
public void consume(){
//sample code
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。