Java performclick()期间的NullPointerException
我正在做一个活动的单元测试。“我的活动”有一个按钮,可以调用一个简单的方法(没有活动、服务或任何其他内容) 位于的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) 我的测试是: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
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;
}
}