Java 在静态方法中模拟UrlEncoder

Java 在静态方法中模拟UrlEncoder,java,junit,mockito,powermock,Java,Junit,Mockito,Powermock,我在模拟静态方法中的UrlEncode.encode方法时遇到问题 MyEncodeClass.java具有此方法 public static myEncode(String s) { UrlEncoder.encode(s, "utf-8"); } 我想在调用UrlEncode.encode方法时强制抛出一个异常 @Test(expect = UnsupportedEncodingException.class) public void myTest() { PowerMocki

我在模拟静态方法中的UrlEncode.encode方法时遇到问题

MyEncodeClass.java具有此方法

public static myEncode(String s) {
  UrlEncoder.encode(s, "utf-8");
}
我想在调用UrlEncode.encode方法时强制抛出一个异常

@Test(expect = UnsupportedEncodingException.class)
public void myTest() {
    PowerMockito.mockStatic(URLEncoder.class);        
    when(URLEncoder.encode("aa", "utf-8")).thenThrow(UnsupportedEncodingException.class);    
    MyEncodeClass.myEncode("aa");
}
但我总是得到以下例外

Caused by: java.lang.NoSuchMethodError: org.mockito.mock.MockCreationSettings.isUsingConstructor()Z

这是因为PowerMockito和Mockito工件之间存在版本冲突。“MockCreationSettings.isUsingConstructor”方法在新版本中被删除,因此您需要确保使用的版本正确。e、 g将PowerMockito版本1.6.2与Mockito版本1.10.19一起使用(此版本有缺失的方法)

虽然我尊重您在测试中对代码覆盖率的贡献,但如果A)开发人员输入错误或B)UTF-8不再受支持,您是在认真尝试模拟不受支持的编码异常?记录致命错误并退出系统不是更容易吗?(对不起,我不能帮你解决你的问题,因为我没有做比EasyMock更复杂的事情。不过祝你好运)是的,我知道这是一个非常扭曲的案例。如果太多的话,我可以跳过它,解释一下原因。不,没关系,做你想做的事,但我不得不抓住机会和你开玩笑。祝您的问题好运。
UrlEncode
URLEncoder
之间有什么关系?谢谢。不幸的是,这对我的案子没有帮助。PowerMockito和Mockito之间有一些神奇的依赖关系。官方支持的版本提示也没有解决这个问题