Android:JUnit测试:junit.framework.AssertionFailedError:Intent为null

时间:2014-03-04 06:11:38

标签: android

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

2)DisplayMessageActivity.java-用户重定向后在第二个屏幕上显示的活动

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

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

在这一行:

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);
    }



     }

请帮忙

1 个答案:

答案 0 :(得分:0)

您的登录活动正在测试中。

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

  

public Intent getStartedActivityIntent()

     

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

     

返回start调用中提供的Intent,如果没有start,则返回null   打电话。