2014-03-04 60 views
0

我寫了一個簡單的Android應用程序,其中包含2個活動: 1)Login.java-接收用戶名和密碼,然後將用戶指向另一個活動 - DisplayMessageActivity.javaAndroid:JUnit測試:junit.framework.AssertionFailedError:意圖是空的

2)DisplayMessageActivity.java-,經過用戶被重新定向

關注這,我寫了一個簡單的測試MainActivityUnitTest.java測試正確的意圖是否爲第二屏幕上顯示的活動通過getStartedActivityIntent()方法觸發

I手動測試它在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); 
    } 



    } 

請幫

回答

0

您登錄活動正在測試。

在調用getStartedActivityIntent之前,這些活動是否調用startactivity?

public Intent getStartedActivityIntent()

Added in API level 1 This method will return the launch intent if your Activity under test calls startActivity(Intent) or startActivityForResult(Intent, int).

Returns The Intent provided in the start call, or null if no start call was made.

+0

是的,它確實是 view.performClick(); \t意圖triggeredIntent = getStartedActivityIntent(); – user3238961

+0

然而,登錄活動調用startactivity 內部 私有類LongOperation延伸的AsyncTask <字符串,空隙,空隙率> { 私有類LongOperation延伸的AsyncTask <字符串,空隙,空隙率> { 塊 因爲我解析一個Web服務 – user3238961

相關問題