对于AndroidTestCase,虽然它提供了getContext()方法获取Context对象,但就一个新的默认的AndroidTestCase类实例,它的成员变量mContext是没有被初始化赋值的,所以getContext()取出的Context对象是null,AndroidTestCase提供setContext(Context context)方法来给mContext赋值,以上,可以看AndroidTestCase类的源码来分析。对于一般的AndroidTestCase可能不好setContext,可以考虑另一种方式获取Context,反射调用ServiceTestCase进行类型转换得到。
public class MyTest extends AndroidTestCase {
private Context getTestContext() {
try {
Method getTestContext = ServiceTestCase.class.getMethod("getTestContext");
return (Context) getTestContext.invoke(this);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}