有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

通过单元测试中的意图启动活动时发生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) 个答案