2012-07-09 70 views
0

我正在爲使用3個按鈕編寫的活動編寫活動測試。其中2個按鈕啓動其他活動。從一個android活動測試中,我該如何完成我的主要活動開始的另一個活動?

我可以編寫一個測試,模擬按鈕推送,然後檢查是否所需的活動正在運行,但我不能從第二個活動回來。第二個活動停留在前面,並阻止假設第一個活動正在運行的其他測試正常工作。他們只是有點凍結。

我有第一個活動的參考,但它是我需要的第二個活動,我猜想調用finish()。有沒有辦法做到這一點?

編輯:我加說明這個要點我的問題的一些實際的源代碼:https://gist.github.com/3076103

它特別是關於測試活動。在生產代碼中一切都很好。

回答

2

你或許應該使用http://developer.android.com/reference/android/app/Instrumentation.ActivityMonitor.html獲得第二個活動的參考,也可以阻止系統啓動(但你仍是存在保證該開始第二次活動逸岸的呼叫已經達到,直到框架)的第二項活動。

+0

+1這是正確的方法,代碼示例,檢查出這個答案(http://stackoverflow.com/questions/9405561/test-if-a-button-starts-a-new-activity-in- Android的JUnit的-PREF-不-robotium)。 – yorkw 2012-07-12 20:59:46

0

您需要一種讓您的活動彼此溝通的方式,以便一項活動可以告訴其他人完成。有幾種方法可以實現這一點。一種方法是在我的應用程序中創建一項服務;我的「第二次」活動將連接到此服務以註冊接收消息的方式,並且我的主要活動將連接以提供它們。

+0

那麼在這種情況下,用戶會做一些事情,如按下按鈕或點擊回來,第二個活動自行完成,然後回到第一個活動。這一切都在生產中正常運行,問題是如何從第一個活動的測試中完成第二個活動。 – Kurt 2012-07-09 11:59:39

0

在活動1添加下列啓動活性2

Intent myIntent = new Intent(view.getContext(), Activity2.class); 
startActivityForResult(myIntent, 0); 

在活性2添加下列啓動活動1,完成活性2

Intent intent = new Intent(); 
setResult(RESULT_OK, intent); 
finish(); 

有關詳細信息:http://www.warriorpoint.com/blog/2009/05/24/android-how-to-switch-between-activities/

+0

大家好,工作正常。我的問題是針對Activity1的活動測試。我可以驗證它是否啓動Activity2,但Activity2只是停留在那裏,以防止其他Activity1測試運行。 – Kurt 2012-07-09 11:57:50

+0

請發佈您的代碼,這將有助於更有效地回答您 – Ponmalar 2012-07-09 11:59:53

0
  • 如果你使用startActivityForResult開始活動,然後你可以c使用finishActivity(int requestCode)失去父母的活動。

    要啓動活動:
    startActivityForResult(new Intent(...), 123123 /*requestCode*/);

    而且當你要完成該活動(從主叫方),用途:
    finishActivity(123123 /*requestCode*/)

  • 也有是找到一種方法,無論是兒童活動完成與否。但是,只有在小孩活動完成後才能跟蹤此情況。要接收孩子的孩子完成請求,您需要覆蓋父活動中的finishFromChild()方法。

+0

我的問題是關於從活動測試中完成的。如果我有一個ActivityOne測試,並且我想測試ActivityOne上的一個按鈕是否啓動ActivityTwo,那麼這個按鈕就可以工作,但是沒有其他測試可以運行,因爲ActivityTwo坐在前臺。 – Kurt 2012-07-12 17:13:16

+0

開始新測試之前,您可以爲ActivityTwo調用finishAcitivity()。 – Karan 2012-07-13 03:51:09

相關問題