引言
单元测试大家都知道,但是简单的mockito不支持对静态及私有方法的mock,显的较为单薄;本文结合实例分析powermock的使用
包引入
需要注意的点:
1.mock,junittest,及powermock有包对应关系
2.junittest与testng混用时,powermock也有对应包依赖关系;maven使用testng进行测试,建议使用testng
3.powermock的使用依赖->javaassist
使用示例
1.简单的使用案例
2.mock静态方法
3.System,HttpClient等特殊类的静态方法mock
System.currentMillis->与正常mock不同,由于调用的是本地方法,谁调用,声明谁
HttpClient(apche)->需要将ssl相关class ignore掉,@PowerMockIgnore({ "javax.net.ssl.*",
"javax.management.*" })
4.mock私有方法,构造方法
使用WhiteBox
5.mock类加载时就初始化的私有静态属性
使用@SuppressStaticInitializationFor("com.cloudwiz.common.conn.TaylorDetectorConnPool")声明
总结