使用JUnit写UT时mock私有方法和属性

一、mock私有方法

1、mock某个类的私有方法

2、mock某个对象的私有方法

 

二、mock私有属性

1、mock某个对象的私有属性

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用PowerMockito和Reflections来mock私有方法需要以下步骤: 1. 引入PowerMockito和Reflections库,例如: ``` <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-module-junit4</artifactId> <version>2.0.7</version> <scope>test</scope> </dependency> <dependency> <groupId>org.reflections</groupId> <artifactId>reflections</artifactId> <version>0.9.11</version> <scope>test</scope> </dependency> ``` 2. 在测试类中使用@RunWith(PowerMockRunner.class)和@PrepareForTest注解来启用PowerMockito,例如: ``` @RunWith(PowerMockRunner.class) @PrepareForTest({SomeClass.class}) public class SomeClassTest { // ... } ``` 这里的SomeClass是要mock私有方法的类。 3. 使用PowerMockito.whenNew()来mock私有方法所在的对象的构造函数,例如: ``` SomeClass mockInstance = PowerMockito.mock(SomeClass.class); PowerMockito.whenNew(SomeClass.class).withNoArguments().thenReturn(mockInstance); ``` 这里的mockInstance是要mock私有方法的对象。 4. 使用Reflections获取私有方法并设置其访问权限,例如: ``` Method method = ReflectionUtils.findMethod(SomeClass.class, "privateMethod", String.class); method.setAccessible(true); ``` 这里的privateMethod是要mock私有方法,String.class是它的参数类型。 5. 使用PowerMockito.when()来mock私有方法的返回值或抛出异常,例如: ``` PowerMockito.when(method.invoke(mockInstance, "param")).thenReturn("mockedResult"); ``` 这里的"param"是privateMethod的参数值,"mockedResult"是mock的返回值。 或者: ``` PowerMockito.when(method.invoke(mockInstance, "param")).thenThrow(new RuntimeException("mockedException")); ``` 这里的"param"是privateMethod的参数值,new RuntimeException("mockedException")是mock的异常。 注意,使用PowerMockito和Reflections来mock私有方法会增加测试代码的复杂度和维护成本,建议尽量避免这种做法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值