Android单元测试:模拟上下文也返回一个循环器

问题描述 投票:0回答:1

这是我的示例代码: SomeClass.java

public class SomeClass {
    public SomeClass(Context mContext) {
        final Looper looper = mContext.getMainLooper();
        Handler mHandler = new Handler(looper);
    }
}

some class test.Java

public class SomeClassTest {
    private SomeClass mSomeClass;

    @Mock
    private Context mContext;

    @before
    public void setup(){
        mSomeClass = new SomeClass(mContext);
    }
}

上面的代码在NullPointerExceptionfinal Looper looper = mContext.getMainLooper();行生成了SomeClass。 如何设置模拟上下文对象以避免此异常?

java android unit-testing android-context android-looper
1个回答
0
投票

假设您正在使用Mockito,您可以向模拟对象添加模拟行为:

public class SomeClassTest {
    private SomeClass mSomeClass;
    private Looper mLooper;

    @before
    public void setup(){
        mLooper = mock(Looper.class);
        Context ctx = mock(Context.class);
        when(ctx.getMainLooper()).thenReturn(mLooper);
        mSomeClass = new SomeClass(mContext);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.