void setActivityContext(Context activityContext)
如果您希望注入模拟,隔离或其他更改的上下文,您可以在此处执行此操作。您必须在调用startActivity(Intent,Bundle,Object)之前调用此函数。如果您希望获得真实的Context,作为构建块,请使用getInstrumentation()。getTargetContext()。
但是当我使用它时如下所示
ContextWrapper context = mock(ContextWrapper.class);
Resources resources = mock(Resources.class);
LayoutInflater layoutInflater = mock(LayoutInflater.class);
when(context.getPackageName()).thenReturn("package_name");
when(context.getResources()).thenReturn(resources);
when(context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).thenReturn(layoutInflater);
setActivityContext(context);
Intent intent = new Intent(getInstrumentation().getTargetContext(), MyActivity.class);
startActivity(intent, null, null);
它失败了这些错误,我似乎无法找到我想念的东西,我嘲笑上下文因为我需要在上下文中存根某些方法
java.lang.AssertionError: LayoutInflater not found.
at android.view.LayoutInflater.from(LayoutInflater.java:231)
at com.android.internal.policy.PhoneWindow.<init>(PhoneWindow.java:306)
at android.app.Activity.attach(Activity.java:6179)
at android.app.Instrumentation.newActivity(Instrumentation.java:1044)
at android.support.test.runner.MonitoringInstrumentation.newActivity(MonitoringInstrumentation.java:601)
at android.test.ActivityUnitTestCase.startActivity(ActivityUnitTestCase.java:147)
答案 0 :(得分:0)
现在在API级别24中不推荐使用类ActivityUnitTestCase
。
改为编写本地单元测试。