Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java performclick()期间的NullPointerException_Java_Android_Nullpointerexception - Fatal编程技术网

Java performclick()期间的NullPointerException

Java performclick()期间的NullPointerException,java,android,nullpointerexception,Java,Android,Nullpointerexception,我正在做一个活动的单元测试。“我的活动”有一个按钮,可以调用一个简单的方法(没有活动、服务或任何其他内容) 位于的java.lang.NullPointerException com.android.my.test.MyActivityTest.testPerformClick(MyActivity.java:41)位于 java.lang.reflect.Method.Invokenactive(本机方法)位于 android.test.InstrumentationTestCase.runM

我正在做一个活动的单元测试。“我的活动”有一个按钮,可以调用一个简单的方法(没有活动、服务或任何其他内容)

位于的java.lang.NullPointerException com.android.my.test.MyActivityTest.testPerformClick(MyActivity.java:41)位于 java.lang.reflect.Method.Invokenactive(本机方法)位于 android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:205) 在 运行测试(InstrumentationTestCase.java:195) 在 ActivityInstrumentationTestCase2.runTest(ActivityInstrumentationTestCase2.java:175) 位于android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169) 位于android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154) 在 onStart(InstrumentationTestRunner.java:430) 在 android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447)

我的测试是:

public class MyActivityTest extends ActivityInstrumentationTestCase2<MyActivity> {
    MyActivity a;

    public MyActivityTest() {
        super("com.android.my", MyActivity.class);
    }

    @Override
    public void setUp() throws Exception {
        super.setUp();
        a = this.getActivity();
    }

    @Override
    public void tearDown() throws Exception {
        super.tearDown();
    }

    public void testPerformClick() {
        a.getButton().performClick();
    }

}

我猜你需要把我的活动改成这个。您的测试为方法
getButton()


a
a.getButton()
null
。a.getButton返回null,但是否应返回“活动”按钮?如果您可以发布可编译的代码,则该按钮非常有用。您的活动未编译<代码>按钮未定义,也未定义按钮()对不起,我编辑了我的帖子。但是我仍然得到nullpoinetException如果你使用上面的代码,仍然是同样的问题?你还有一些其他的问题。生成NPE是因为当您的测试调用
getButton()
时,它会返回一个空值。因此,当您测试调用click函数时,它抛出NPE。检查以确保您正在正确构建活动,并且对于
b
,您确实有一个非空的
按钮
值。在代码中放置断点以进行验证。每当我尝试返回视图元素时,都会收到nullpointerexception。为什么?我不能使用测试类中的按钮吗?确保您的
onCreate
方法按您认为应该的方式调用。
public class MyActivity extends Activity implements OnClickListener {

    private Button b;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        button = new Button();
        button.setOnClickListener(this);
    }

    @Override
    public void onClick(View arg0) {
        method();
    }

    private void method() {
        // [...]
    }

    public void getButton() {
        return button();
    }
}
public class MyActivity extends Activity implements OnClickListener 
{
    private Button b;

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        b=new Button();
        b.setOnClickListener(this);
    }

    @Override
    public void onClick(View arg0) 
    {
        method();
    }

    private void method()
    {
        ...
    }

    public Button getButton()
    {
        return b;
    }
}