2013-04-13 42 views
7

我正在嘗試在Robotium中運行一些自動化測試。我在我的應用程序下面的代碼設置了一個選項菜單:單擊Robotium中的Action Bar菜單項

public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) { 
    com.actionbarsherlock.view.MenuInflater inflater = getSupportMenuInflater(); 
     inflater.inflate(R.layout.logoutmenu, menu); 
     return super.onCreateOptionsMenu(menu); 
    } 

我嘗試在Robotium點擊菜單上使用的代碼:

solo.sendKey(Solo.MENU); 
solo.clickOnView(solo.getView(R.id.share)); //share is the id of the menu item 

但是我的測試與錯誤失敗的原因:

solo.clickOnView(solo.getView(R.id.logoutmenu)); 
solo.clickOnMenuItem("Share My Artists"); 

View is null and therefore cannot be clicked. 

我也用下面的代碼,這也沒試過

+0

你在Android 2.3上運行你的測試嗎? – atermenji

+0

@atermenji no on 4.1 – AndroidEnthusiast

回答

18

如果您在Android 4.0+上運行Robotium測試,請考慮使用solo.clickOnActionBarItem()

+0

只是讓人們想知道正確的參數,它是「int id」,所以不要放{0,1,...},而是放入R.id.your_id。 ; ) – zatziky

+0

我想點擊操作欄上的溢出菜單並點擊設置項目。 solo.clickOnActionBarItem(爲0x1);工作之前,但現在它不工作,我認爲有什麼改變,我不知道什麼,appcompat行動欄。我正在測試使用apk我有權訪問R.id.x –

0

我能得到它的工作在所有的軟件開發工具包,使用這樣的:

View ab = _solo.getCurrentActivity().findViewById(R.id.action_bar); 
ArrayList<View> views = _solo.getViews(ab); 
for (int i = 0; i <views.size(); i++) { 
    if (views.get(i).getClass().getName().contains("ActionMenuPresenter")) { 
     _solo.clickOnView(views.get(i)); 
     _solo.waitForText(SOME_TEXT); 
    } 
} 
0

只是做到這一點:

solo.sendKey(Solo.MENU); 
solo.clickInList(5); 

5的位置只是將其更改爲你的菜單項 的位置第一個是1,第二個是2等。