我有一个方法执行测试以查看用户是否已获得授权,然后在其中包含我想测试的其他逻辑,而不实际登录以授权我的用户。
所以,我有这个静态方法OAuthUtil.retrieveAuthority()
,它返回一个字符串,让我们说“域名”。
我的构造函数类似于
public ImplService(){
String authority = OAuthUtil.retrieveAuthority();
//do something else
}
我还有另一种方法,就是我实际尝试测试的方法,比如getList()
。
retrieveAuthority()
反过来会抛出一个WebApplicationException,它将永远是,但我想完全绕过它。所以,我希望我的模拟返回一些东西(“域”)而不是抛出异常。这可能吗?
所以,我的测试现在是这样的,当遇到异常时它会失败:
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.modules.junit4.PowerMockRunner;
@RunWith(PowerMockRunner.class)
public class TestMine {
public ImplService impl;
@Before
public void setUp() {
PowerMockito.mockStatic(OAuthUtil.class);
PowerMockito.when(OAuthUtil.retrieveAuthority()).thenReturn("domain");
ImplService impl = new ImplService();
}
@Test
public void getListTest() throws NotFoundException {
Response response = impl.getList();
}
}
答案 0 :(得分:2)
是的,这是完全可能的。你需要添加:
@PrepareForTest({OAuthUtil.class})
public class TestMine { //above this line