Robotium を使い始めたばかりで、最初の非常に簡単なテストを試みましたが、説明できない問題が発生したり、論理的に思えません。
タブホストのコンテンツ セクションに表示される各アクティビティに、ActivityGroup とトグル ボタンを備えた TabHost があります。トグル ボタンを押すと、タブ コンテンツ エリアが別のアクティビティ (mTabHost.setCurrentTab(Intent intent);) に変わります。すべてのアクティビティには、このようなトグル ボタンがあり、常に "Toggle" というラベルが付いています。秒のアクティビティのトグル ボタンをクリックすると、最初のアクティビティに戻ります (すべてタブ コンテンツ エリア内)。
|-----------------|
| TabHost | |
|-----------------|
| |
| Toggle-Button |
| |
| (ActivityGroup: |
| Activities |
| change in here) |
| |
|-----------------|
さて、手動ではこれはすべて正常に機能しますが、ロボティウム テストでは機能しません。2 番目のアクティビティのトグル ボタンをクリックしようとすると、「junit.framework.AssertionFailedError: View can not be click!」というエラー メッセージが表示されます。
これは私のテストです - 非常にシンプルで小さいです:
solo.sleep(5000);
solo.waitForActivity("StartTabsActivity", 10000);
solo.clickOnButton("Toggle");
// this will swap the activity inside the tabhost content section
solo.sleep(5000);
solo.waitForActivity("StatusListActivity", 5000);
solo.assertCurrentActivity("Expected StatusList activity", "StatusListActivity");
LogUtils.logD("robotium: button label: " + solo.getButton(1).getText());
// ... outputs: robotium: button label: Toggle
LogUtils.logD("robotium: button clickable: " + solo.getButton(1).isClickable());
// ... outputs: robotium: button clickable: true
solo.clickOnButton("Toggle");
// ... throws: junit.framework.AssertionFailedError: View can not be clicked!
ここで理解できないこと: 「トグル」ラベルの付いたボタンが存在し、クリック可能であることを確認していますが、「このビューはクリックできません」というエラーが表示されます。また、それぞれの現在のアクティビティには「トグル」ボタンが 1 つしかありません。
この質問に関連して、もう 1 つマイナーなものがあります。TabHost + ActivityGroup を使用する場合、「solo.getCurrentActivity()」は常に、外側のアクティビティではなく、ActivityGroup の埋め込みアクティビティを返しますか? ソロはまだ外部アクティビティの要素にアクセスできますか? ただし、上記の場合、トグルボタンは常に内部/埋め込みアクティビティの一部です-ここで問題になる場合に備えて。