Java 如何用mockito模拟静态方法?
我需要用moockito模拟静态方法,但我不能 这是我的密码Java 如何用mockito模拟静态方法?,java,spring,Java,Spring,我需要用moockito模拟静态方法,但我不能 这是我的密码 this is the class i want to mock String buc = TrackerGenerator.getMetadataLocalThread().getIdUsuarioFinal(); 这就是测试 @Test public void serviceTest() { TrackerGenerator trackerGenerator = mock(TrackerGenerator.clas
this is the class i want to mock
String buc = TrackerGenerator.getMetadataLocalThread().getIdUsuarioFinal();
这就是测试
@Test
public void serviceTest() {
TrackerGenerator trackerGenerator = mock(TrackerGenerator.class);
when(TrackerGenerator.getMetadataLocalThread().getIdUsuarioFinal()).thenReturn("0");
TrackerGenerator.setMetadataLocalThread(new ThreadLocal<>());
}
@测试
public void serviceTest(){
TrackerGenerator TrackerGenerator=mock(TrackerGenerator.class);
当(TrackerGenerator.getMetadataLocalThread().getIDUsarioFinal())。然后返回(“0”);
setMetadataLocalThread(newThreadLocal());
}
由于静态方法属于该类,在Mockito中无法模拟静态方法。但是,您可以使用PowerMock和Mockito框架来模拟静态方法
具有静态方法的简单类:
public class Utils {
public static boolean print(String msg) {
System.out.println(msg);
return true;
}
}
在JUnit测试用例中使用Mockito和PowerMock对静态方法进行类测试模拟:
@RunWith(PowerMockRunner.class)
@PrepareForTest(Utils.class)
public class JUnit4PowerMockitoStaticTest{
@Test
public void test_static_mock_methods() {
PowerMockito.mockStatic(Utils.class);
when(Utils.print("Hello")).thenReturn(true);
when(Utils.print("Wrong Message")).thenReturn(false);
assertTrue(Utils.print("Hello"));
assertFalse(Utils.print("Wrong Message"));
PowerMockito.verifyStatic(Utils.class, atLeast(2));
Utils.print(anyString());
}
}
有关更多详细信息,请参见。我按照您所说的做了,并在org.powermock.api.extension.proxyframework.ProxyFrameworkImpl.isProxyFrameworkImpl(ProxyFrameworkImpl.java:52)org.powermock.reflect.internal.WhiteboxImpl.getUnmockedType(WhiteboxImpl.java:1689)抛出了以下错误-->java.lang.NoClassDefFoundError:org/mockito/cglib/ProxyFrameworkImpl/proxy/proxy在org.powermock.reflect.internal.WhiteboxImpl.getType(WhiteboxImpl.java:2111)和org.powermock.reflect.internal.WhiteboxImpl.setInternalState(WhiteboxImpl.java:33)上,库的版本冲突,请尝试以下-->