Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何用mockito模拟静态方法?_Java_Spring - Fatal编程技术网

Java 如何用mockito模拟静态方法?

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

我需要用moockito模拟静态方法,但我不能 这是我的密码

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)上,库的版本冲突,请尝试以下-->