Powermock在springboot中的使用及其问题解决

先上代码和pom依赖

@RunWith(PowerMockRunner.class)
@PowerMockRunnerDelegate(SpringRunner.class)
@PowerMockIgnore({"javax.management.*", "javax.net.ssl.*"})
@PrepareForTest({StringUtils.class})
@SpringBootTest()
public class DemoStringServiceImplTest {

    @Autowired
    DemoStringService stringService;


    @Test
    public void add() {

        PowerMockito.mockStatic(StringUtils.class);

        Mockito.when(StringUtils.add("test")).thenReturn("123456");

        String test = stringService.add("test");

        System.out.println(test);
    }
}

其中StringUtils是一个静态类,里面是简单的静态方法,而DemoStringService是使用这个静态方法的地方

public class StringUtils {

    public final static String add(String str) {
        return str+"****";
    }

}

POM依赖


        2.0.2
    

            org.powermock
            powermock-module-junit4
            ${powermock.version}
            test


            org.powermock
            powermock-api-mockito2
            ${powermock.version}
            test

问题点:

  1. 使用PowerMockRunner代替SpringRunner , 并且@PrepareForTest来表示需要mock静态方法的类

  2. 当出现Powermock和mock冲突时 org.mockito.internal.handler.MockHandlerFactory.createMockHandler(Lorg/mocki) , 可尝试调整Powermock的依赖位置到spring的前面

你可能感兴趣的:(Powermock在springboot中的使用及其问题解决)