通过单元测试中的意图启动活动时发生java NullPointerException
我正在尝试为我的主要活动创建一个单元测试
主要活动。类包含一个内部静态片段类,在该片段中是一个由TextView生成的按钮,该按钮在其onClick方法中启动另一个活动。当我运行单元测试时,我得到一个NullPointerException。单元测试的代码为:
public class MainActivityTest extends ActivityUnitTestCase<MainActivity> {
private Intent mMainIntent;
private MainActivity mMainActivity;
public MainActivityTest() {
super(MainActivity.class);
}
@Override
protected void setUp() throws Exception {
super.setUp();
mMainIntent = new Intent(Intent.ACTION_MAIN);
mMainActivity = startActivity(mMainIntent, null, null);
}
public void testButtonWithValidPostcode () {
FragmentManager m = mMainActivity.getFragmentManager();
m.executePendingTransactions();
TextView mainButton = (TextView) mMainActivity.findViewById(R.id.mainButton);
EditText textField = (EditText) mMainActivity.findViewById(R.id.mainPostcode);
textField.setText("SE18");
mainButton.performClick();
Intent i = getStartedActivityIntent();
assertNotNull(i);
assertTrue(isFinishCalled());
}
}
它在performClick()上崩溃,在调试模式下运行时,在onClick方法中,该活动似乎没有正确实例化
有人知道为什么会这样吗
以下是测试的日志输出:
java.lang.NullPointerException
at 安卓.app.Activity.startActivityFromFragment(Activity.java:3957)
at 安卓.app.Activity.startActivityFromFragment(Activity.java:3932)
at 安卓.app.Fragment.startActivity(Fragment.java:1054)
at 安卓.app.Fragment.startActivity(Fragment.java:1033)
at com.intuitivedesigns.restaurants.MainActivity$PlaceholderFragment$2.onClick(MainActivity.java:106)
以下是MainActivity中的onClick方法。第106行为起始触觉(意图)
searchButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String postCode = textField.getText().toString();
if (postCode != null && SupportUtilities.isValidPostcode(postCode)) {
Intent listViewIntent = new Intent(MainActivity.this, RestaurantListActivity.class);
listViewIntent.putExtra(POSTCODE_FLAG, postCode);
startActivity(listViewIntent);
}
}
}
共 (0) 个答案