Java测试框架系列:PowerMock使用系列-6:Mock系统类

本文介绍如何使用PowerMock框架模拟Java中的系统类,如java.lang和java.net中的类。通过注解和特定API,可以在不修改JVM或IDE设置的情况下模拟静态方法。文中提供了一个示例,演示如何模拟URLEncoder.encode方法。
摘要由CSDN通过智能技术生成

Mock系统类

注意:尽管此处显示的所有示例都是使用EasyMock API扩展制作的,但相同的技术也适用于Mocktio API扩展。

总览

  1. 在类上使用 @RunWith(PowerMockRunner.class) 注解。
  2. 在类上使用 @PrepareForTest({ClassThatCallsTheSystemClass.class}) 注解。
  3. 使用 mockStatic(SystemClass.class) 去Mock系统类,然后设置正常的期望值。
  4. 仅EasyMock可用: 使用 PowerMock.replayAll() 切换到replay模式。
  5. 仅EasyMock可用: 使用 PowerMock.verifyAll() 切换到verify模式。

示例

PowerMock 1.2.5及更高版本支持Mock Java系统类(例如位于java.lang和java.net等中的类)中的方法。此方法无需修改JVM或IDE设置即可!模拟这些类的方式与平常有些不同。通常,您将准备包含要模拟的静态方法的类(我们称其为X),但是因为PowerMock无法准备要测试的系统类,所以必须采用另一种方法。因此,不用准备X,而是准备调用X中静态方法的类!让我们看一个简单的例子:

public class SystemClassUser {

	public String performEncode() throws UnsupportedEncodingException {
		return URLEncoder.encode("string", "enc");
	}
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值