前言
PowerMock
是一个单元测试框架,可以模拟静态方法,私有方法和
final
方法等来简化单元测试的编写。本篇文章将对使用
PowerMock
需要的依赖进行介绍。
正文
一. 注解添加与使用场景
在使用
PowerMock
时需要针对不同场景添加对应注解,主要是
@RunWith
和
@PrepareForTest
注解。注解添加和场景对应如下所示。
场景注解模拟final方法
@PrepareForTest
,
@RunWith
模拟静态方法
@PrepareForTest
,
@RunWith
模拟私有方法
@PrepareForTest
使用whenNew
@PrepareForTest
,
@RunWith
@PrepareForTest
注解用于告诉
PowerMock
需要准备某些类进行测试,这些类包括
final
类,带有
final
,
private
,
static
或
native
方法的类,上述类需要
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-mockito2
和
powermock-module-junit4
是为了提供
PowerMock
功能,其中
powermock-module-junit4
中还引入了
hamcrest-core
,主要是使用其提供的
org.hamcrest.MatcherAssert.assertThat
和
org.hamcrest.Matchers.is
进行断言判断。
在引入依赖时,需要注意核对
Mockito
和
PowerMock
的版本对应关系,否则会报
java.lang.ClassNotFoundException: org.mockito.exceptions.Reporter
错误。版本对应关系可以去
PowerMock
官网进行查询:PowerMock官网,通常情况下,如果引入的
mockito-core
版本为2.x,则
PowerMock
的api需要使用
powermock-api-mockito2
。
版权归原作者 樱花祭的约定 所有, 如有侵权,请联系我们删除。