《Java单元测试实战》——编写方法:Java编程技巧之单元测试用例编写流程(11) https://developer.aliyun.com/article/1232408?groupCode=java
3. 验证方法调用并捕获参数值
Mockito提供ArgumentCaptor类来捕获参数值,通过调用forClass(Class clazz)方法来构建一个ArgumentCaptor对象,然后在验证方法调用时来捕获参数,最后获取到捕获的参数值并验证。如果一个方法有多个参数都要捕获并验证,那就需要创建多个ArgumentCaptor对象。
ArgumentCaptor的主要接口方法:
• capture方法,用于捕获方法参数;
• getValue方法,用于获取捕获的参数值,如果捕获了多个参数值,该方法只返回最后一个参数值;
• getAllValues方法,用户获取捕获的所有参数值。
1) 使用ArgumentCaptor.forClass方法定义参数捕获器
在测试用例方法中,直接使用ArgumentCaptor.forClass方法定义参数捕获器。
注意:定义泛型类的参数捕获器时,存在强制类型转换,会引起编译器警告。
2) 使用@Captor注解定义参数捕获器
也可以用Mockito提供的@Captor注解,在测试用例类中定义参数捕获器。
注意:定义泛型类的参数捕获器时,由于是Mockito自行初始化,不会引起编译器警告。
3) 捕获多次方法调用的参数值列表
4. 验证其它特殊方法
1) 验证final方法调用
final方法的验证跟普通方法类似,这里不再累述。
2) 验证私有方法调用
PowerMockito提供verifyPrivate方法验证私有方法调用。
3) 验证构造方法调用
PowerMockito提供verifyNew方法验证构造方法调用。
4) 验证静态方法调用
PowerMockito提供verifyStatic方法验证静态方法调用。
《Java单元测试实战》——编写方法:Java编程技巧之单元测试用例编写流程(13) https://developer.aliyun.com/article/1232405?groupCode=java