在静态方法中模拟UrlEncoder

时间:2015-06-11 21:53:09

标签: 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() {
    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

1 个答案:

答案 0 :(得分:17)

这是因为PowerMockito和Mockito工件之间存在版本冲突。 " MockCreationSettings.isUsingConstructor"在新版本中删除了方法,因此您需要确保使用的是正确的版本。例如,使用PowerMockito版本1.6.2与Mockito版本1.10.19(此版本有丢失的方法)