使用PowerMockito嘲笑Java中其他类的静态功能



我已经写了用于测试Main中的功能的测试用例,称为functionMain()。我已经看到人们使用PowerMockito在正在测试的Main类中测试静态功能。

但是,就我而言,functionMain()正在使用名为staticBranchFunction()的另一个类的静态函数,称为CC_6。

我想在Main类的测试中模拟staticBranchFunction()

此主要功能实际上具有来自不同类Branch1Branch2等的静态功能的调用。

请帮助。

import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.times;
import static org.powermock.api.mockito.PowerMockito.mockStatic;
import static org.powermock.api.mockito.PowerMockito.verifyStatic;
@RunWith(PowerMockRunner.class)
@PrepareForTest({Boom.class})
public class DocTest {
    public String boomWrapper() {
        return Boom.detonate();
    }
    @Test
    public void testBoom() {
        mockStatic(Boom.class);
        when(Boom.detonate()).thenReturn("defused");
        String actual = boomWrapper();
        verifyStatic(Boom.class, times(1));
        Boom.detonate();
        assertEquals("defused", actual);
    }    
}
class Boom {
    private static final String BOOM = "Boom!";  
    public static String detonate() {
        return BOOM;
    }
}

依赖项:

junit:junit:4.12  
org.mockito:mockito-core:2.13.0  
org.powermock:powermock-module-junit4:2.0.0-beta.5  
org.powermock:powermock-api-mockito2:2.0.0-beta.5  

描述:

有关更多支持的版本,请阅读:Mockito PowerMock,其他支持的框架要求:

  • 列出@PrepareForTest({Boom.class})中的所有静态类,由逗号分开。
  • 模拟PowerMockito.mockStatic(Boom.class)的所有静态类模拟。
  • 分开
  • 使用常规的Mockito方法来设置您的期望,例如Mockito.when(Boom.detonate()).thenReturn("defused")
  • 通过PowerMockito.verifyStatic(Boom.class, Mockito.times(1)); Boom.detonate(); 验证行为>重要:您需要调用PowerMockito.verifyStatic(Boom.class)每方法验证。

有关PowerMock Wiki的更多详细信息。

相关内容

  • 没有找到相关文章

最新更新