在静态方法中模拟 UrlEncoder
mocking UrlEncoder in a static method
我在模拟静态方法中的 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" 方法在新版本中被删除,所以你需要确保你使用的是正确的版本。例如,将 PowerMockito 1.6.2 版与 Mockito 1.10.19 版一起使用(此版本缺少该方法)
我在模拟静态方法中的 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" 方法在新版本中被删除,所以你需要确保你使用的是正确的版本。例如,将 PowerMockito 1.6.2 版与 Mockito 1.10.19 版一起使用(此版本缺少该方法)