我想测试一个包含变量 PlateformConnect 的 fragment UserConnectFragment。这个类有一个初始化 Facebook SDK 的方法:
@Override
public void create() {
FacebookSdk.sdkInitialize(MyApplication.getInstance().getApplicationContext());
}
我用 MyApplication 类扩展了 Android 应用程序。
在 UserConnectFragment 中,我这样使用 PlateformConnect:
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
// Must be done before the content view assignement!
PlateformConnect.getInstance().create();
...
在我的 Robolectric 类测试中:
@Before
public void setUp() throws Exception {
// Create basic activity, and add fragment
mActivity = Robolectric.buildActivity(FragmentActivity.class).create().start().resume().get();
mUserConnectFragment = new UserConnectFragment();
addMapFragment(mActivity, mUserConnectFragment);
//mLoginButton = (Button) mActivity.findViewById(R.id.facebook_button);
}
此测试运行时发生崩溃:
java.lang.NullPointerException
at com.xxx.yyyy.ui.intro.UserConnectFragment.onViewCreated(UserConnectFragment.java:77)
出现这个错误是因为我使用了:
MyApplication.getInstance().getApplicationContext()
... getInstance() 返回 null。
在我的应用程序中,我在很多类中使用 MyApplication.getInstance(),那么我该如何使用 Robolectric 进行测试??
谢谢大家!
最佳答案
我找到了解决方案:只需添加@Config(xxx) 来设置应用程序类名。
@RunWith(RobolectricTestRunner.class)
@Config(application = MyApplication.class)
public class UserConnectFragmentTest {
...
关于android - Robolectric:如何测试内部使用应用程序实例的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30735936/