Android 单元测试实战(2)—— 基于Powermock的常用方法指南

本文介绍了在Android单元测试中使用Powermock的一些常用方法,包括Mock和Spy的区别,如何处理findViewById,使用Whitebox.setInternalState()设置内部状态,使用PowerMockito.supress()抑制不需要执行的方法,通过PowerMockito.whenNew()验证对象创建,以及利用PowerMockito.thenAnswer()模拟回调验证。这些技巧对于编写有效的单元测试非常有帮助。
摘要由CSDN通过智能技术生成

上一篇中,基于调研和分析,决定使用Powermock完成单元测试的编写。

关于Powermock的使用方式,网上有很多的文章进行解释,下面仅仅介绍一些在Android上的常用姿势。

随着时间推移,该文章会不断完善。

Mock vs Spy

Powermock提供了mockspy两种方式,对于Activity的私有方法的调用验证通常需要做方法模拟。mockspy都可以实现,mock是默认对有方法都模拟。spy是默认对所有方法都不模拟。

个人建议是使用mock,因为activity里面的方法逻辑很多,而对于一个单元测试,我们往往只是测试一个方法,对其它方法都需要mock。用以验证调用或者模拟方法返回值等。

findViewById

activity中最不缺的就是控件查找,那么直接调用findViewById()肯定是会报错的Stub。那么通常的做法是mock一个activity,但是mock的方法的findViewById()返回值为null。

举例:验证activityonCreate中是否对View设置了点击监听。

 protected void onCreate(Bundle savedInstanceState) {
   
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_launcher);
        mSkipView = findViewById(R.id.skip);
        mSkipView.setOnClickListener(this);
    }

测试代码:

@PrepareForTest({
   LauncherActivity.class, Build.VERSION.class})
public class LauncherActivityTest extends PowerMockTest {
   

    @Mock
    LauncherActivity activity;

    @Mock
    View mSkipView;

    @Test
    public void onCreateSdk19() throws Exception {
   
        PowerMockito.doCallRealMethod().when(activity, "onCreate", ArgumentMatchers.any(
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值