Android:JUnit测试:JUnit.framework.AssertionFailedError:Intent为空

Android:JUnit测试:JUnit.framework.AssertionFailedError:Intent为空,android,Android,我编写了一个简单的Android应用程序,包含两个活动: 1) Login.java-它接收用户名和密码,然后将用户定向到另一个activity-DisplayMessageActivity.java 2) DisplayMessageActivity.java—重新定向用户后出现在第二个屏幕上的活动 接下来,我编写了一个简单的测试MainActivityUnitTest.java,以测试是否通过getStartedActivityIntent()方法触发了正确的意图 我在Android手机上手

我编写了一个简单的Android应用程序,包含两个活动: 1) Login.java-它接收用户名和密码,然后将用户定向到另一个activity-DisplayMessageActivity.java

2) DisplayMessageActivity.java—重新定向用户后出现在第二个屏幕上的活动

接下来,我编写了一个简单的测试MainActivityUnitTest.java,以测试是否通过getStartedActivityIntent()方法触发了正确的意图

我在Android手机上手动测试了它,但是,当我运行MainActivityUnitTest.java作为JUnit测试时,它显示: junit.framework.AssertionFailedError:意图为空

在这一行:

assertNotNull("Intent was null", triggeredIntent);
MainActivityUnitTest.java

public class MainActivityUnitTest extends
android.test.ActivityUnitTestCase<Login> {

private int buttonId;
private Login activity;

public MainActivityUnitTest() {
 super(Login.class);
}

@Override
protected void setUp() throws Exception {
 super.setUp();
 Intent intent = new Intent(getInstrumentation().getTargetContext(),
    Login.class);
 startActivity(intent, null, null);
 activity = getActivity();
}


public void testLayout(){
    //buttonId = com.example.myfirstapp2.MainActivity.R.id.button1;
    //assertNotNull(activity.findViewById(buttonId));

    Button view = (Button)activity.findViewById(R.id.btnLogin);
    assertEquals("Incorrect label of the button", "Login", view.getText());

 }

 public void testIntentTriggerViaOnClick() {

  Button view = (Button)activity.findViewById(R.id.btnLogin);
  assertNotNull("Button not allowed to be null", view);

  view.performClick();
  Intent triggeredIntent = getStartedActivityIntent();
  assertNotNull("Intent was null", triggeredIntent);

  String data = triggeredIntent.getExtras().getString("URL");

    assertEquals("Incorrect data passed via the intent",
        "1http://www.vogella.com", data);
    }



     }
公共类MainActivityUnitTest扩展
android.test.ActivityUnitTestCase{
私人内部按钮;
私人登录活动;
公共维护活动单元测试(){
super(Login.class);
}
@凌驾
受保护的void setUp()引发异常{
super.setUp();
Intent Intent=新的Intent(getInstrumentation().getTargetContext(),
登录类);
startActivity(意向、无效、无效);
activity=getActivity();
}
公共void testLayout(){
//buttonId=com.example.myfirstapp2.MainActivity.R.id.button1;
//assertNotNull(activity.findviewbyd(buttonId));
按钮视图=(按钮)activity.findViewById(R.id.btnLogin);
assertEquals(“按钮的标签不正确”,“登录”,view.getText());
}
公共无效测试TriggerviaonClick(){
按钮视图=(按钮)activity.findViewById(R.id.btnLogin);
assertNotNull(“按钮不允许为null”,视图);
view.performClick();
Intent triggeredIntent=getStartedActivityIntent();
assertNotNull(“意图无效”,触发事件);
字符串数据=triggeredIntent.getExtras().getString(“URL”);
assertEquals(“通过intent传递的数据不正确”,
"1http://www.vogella.com“,数据);
}
}

请帮助

您的登录活动正在测试中

在调用getStartedActivityIntent之前,这些活动是否调用startactivity

公共意图getStartedActivityIntent()

在API级别1中添加了此方法,如果 测试中的活动调用startActivity(意图)或 startActivityForResult(Intent,int)

返回start调用中提供的意图,如果没有start,则返回null 有人打了电话


是的,它确实查看.performClick();Intent triggeredIntent=getStartedActivityIntent();但是,在解析web服务时,登录活动在私有类LongOperation extends AsyncTask{私有类LongOperation extends AsyncTask{块中调用startactivity