PowerMockito的PrePareForTest什么时候用

昨天写单测,怎么写怎么不对,whennew 总是会抛出异常,各种方法都避免不了,原来:

当使用PowerMockito.whenNew方法时,必须加注解@PrepareForTest和@RunWith。注解@PrepareForTest里写的类是需要mock的new对象代码所在的类。

当需要mock final方法的时候,必须加注解@PrepareForTest和@RunWith。注解@PrepareForTest里写的类是final方法所在的类。

当需要mock静态方法的时候,必须加注解@PrepareForTest和@RunWith。注解@PrepareForTest里写的类是静态方法所在的类。

当需要mock私有方法的时候, 只是需要加注解@PrepareForTest,注解里写的类是私有方法所在的类

当需要mock系统类的静态方法的时候,必须加注解@PrepareForTest和@RunWith。注解里写的类是需要调用系统方法所在的类

PowerMockito 是一个Java测试框架,它扩展了其他流行测试框架(如Mockito),提供了Mock静态方法、私有方法、构造函数和final类等额外的功能。在PowerMockito中,`@Replace` 注解可以用来在测试中替换类的实现。 使用`@Replace`注解通常分为以下几个步骤: 1. 首先,确保你的测试类或者测试方法上有`@RunWith(PowerMockRunner.class)`注解。这是使用PowerMockito所必需的,因为PowerMockito需要使用它自己的运行器来支持额外的模拟功能。 ```java @RunWith(PowerMockRunner.class) public class MyTest { // 测试方法 } ``` 2. 接下来,在测试方法或者测试类上使用`@Replace`注解。你可以选择为整个类的实例替换方法,也可以为特定的方法替换。 使用在测试类上时,所有该类的实例化都会使用替换后的方法。使用在具体的测试方法上时,只有该方法中的实例化会使用替换后的方法。 - 替换整个类实例: ```java @RunWith(PowerMockRunner.class) @PrepareForTest({MyClass.class}) @Replace(MyClass.class) public class MyTest { // 测试方法 } ``` - 替换类中的特定方法: ```java @RunWith(PowerMockRunner.class) @PrepareForTest({MyClass.class}) public class MyTest { @Replace("myMethodName") public void testSpecificMethod() { MyClass myClass = new MyClass(); // 这里调用 myClass 的 myMethodName 时,将使用替换了的方法 } } ``` 请注意,使用`@Replace`注解时,你需要同时使用`@PrepareForTest`注解来指定哪些类的静态方法将被模拟。 - 相关问题--: 1. 使用PowerMockito时,如何准备一个静态方法进行测试? 2. 在PowerMockito中,如何模拟私有方法? 3. 为什么在使用PowerMockito时需要指定`@PrepareForTest`注解?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值