当前位置: 首页 > 工具软件 > PowerMock > 使用案例 >

PowerMock使用-依赖准备

雍嘉勋
2023-12-01

前言

PowerMock是一个单元测试框架,可以模拟静态方法,私有方法和final方法等来简化单元测试的编写。本篇文章将对使用PowerMock需要的依赖进行介绍。

正文

一. 注解添加与使用场景

在使用PowerMock时需要针对不同场景添加对应注解,主要是@RunWith@PrepareForTest注解。注解添加和场景对应如下所示。

场景注解
模拟final方法@PrepareForTest@RunWith
模拟静态方法@PrepareForTest@RunWith
模拟私有方法@PrepareForTest
使用whenNew@PrepareForTest@RunWith

@PrepareForTest注解用于告诉PowerMock需要准备某些类进行测试,这些类包括final类,带有finalprivatestaticnative方法的类,上述类需要PowerMock基于字节码进行操作。可以按照@PrepareForTest(TestObj.class)的方式来告诉PowerMock准备TestObj类进行测试。

@RunWith注解用于告诉JUnit使用哪个运行类来运行@RunWith注解修饰的类中的测试程序,例如@RunWith(PowerMockRunner.class),则告诉JUnit使用PowerMockRunner来运行@RunWith注解修饰的类中的测试程序。

二. 使用PowerMock需要添加的依赖

需要引入的依赖如下所示。

<dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <version>2.23.0</version>
        <scope>test</scope>
</dependency>
<dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-api-mockito2</artifactId>
        <version>2.0.2</version>
        <scope>test</scope>
</dependency>
<dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-module-junit4</artifactId>
        <version>2.0.2</version>
        <scope>test</scope>
</dependency>

引入mockito-core是为了提供Mockito功能,主要使用到org.mockito.ArgumentMatchers参数占位符,部分情况需要使用到org.mockito.BDDMockito。引入powermock-api-mockito2powermock-module-junit4是为了提供PowerMock功能,其中powermock-module-junit4中还引入了hamcrest-core,主要是使用其提供的org.hamcrest.MatcherAssert.assertThatorg.hamcrest.Matchers.is进行断言判断。

在引入依赖时,需要注意核对MockitoPowerMock的版本对应关系,否则会报java.lang.ClassNotFoundException: org.mockito.exceptions.Reporter错误。版本对应关系可以去PowerMock官网进行查询:PowerMock官网,通常情况下,如果引入的mockito-core版本为2.x,则PowerMockapi需要使用powermock-api-mockito2

 类似资料: