Robotiumテストは失敗します:junit.framework.assertionfailederror:ビューをクリックできません!
-
29-09-2019 - |
質問
私はRobotiumを始めたばかりで、最初の非常に簡単なテストを試みましたが、説明できない /私にとって論理的ではない問題を経験しました。
Tabhostセクションに表示される各アクティビティにアクティビティグループとトグルボタンを備えたTabhostがあります。トグルボタンを押すと、タブのコンテンツ領域が別のアクティビティに変更されます(mtabhost.setCurrentTab(意図意図););)。すべてのアクティビティには、常に「トグル」というラベルが付いたトグルボタンがあります。秒アクティビティの[トグル]ボタンをクリックすると、最初の[コンテンツ領域内のすべて)に戻ります。
|-----------------|
| TabHost | |
|-----------------|
| |
| Toggle-Button |
| |
| (ActivityGroup: |
| Activities |
| change in here) |
| |
|-----------------|
これで、手動でこれはすべて正常に機能しますが、Robotiumテストではありません。 2番目のアクティビティの[トグル]ボタンをクリックしようとすると、エラーメッセージ「junit.framework.assertionfailederror:ビューはクリックできません!」
これは私のテストです - 非常にシンプルで小さい:
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つだけです。
この質問に関連して、私は別のマイナーなものを持っています:Tabhost + ActivityGroupで作業するとき、「solo.getCurrentactivity()」は常に外側のものではなく、アクティビティグループの埋め込みアクティビティを返しますか?ソロはまだ外側のアクティビティの要素にアクセスできますか?ただし、上記の場合、トグルボタンは常に内側/埋め込みアクティビティの一部です - ここで重要な場合。
解決
Robotium Devから返信を受け取ったところ、これはRobotium 1.8で修正される問題です。見る ここ
他のヒント
これを使用できます。
solo.clickOnView(solo.getView("Toggle"))
また:
solo.clickOnView(solo.getView(R.id.B))
代わりに、Androidが提供するJunit Automation自体に行くことができます。 Keyeventsを簡単に送信してメニューオプションを選択し、タスクを完了できます。
必要なのは、メニューオプションを選択するテストコードにJunitテストケースメソッドを作成することです。以下のこれらの方法に従ってください: -
- テスト方法でアクティビティを起動します
- KeyEventメニューを送信して、アクティビティにクリックします。メニューオプションが表示されたら、オプションに焦点を合わせてKeyEvent DPADセンターを送信するために、ダウン、左、右のKeyeventsを送信します。
これがあなたの問題をうまく解決することを願っています。しかし、この前に、Android SDKで利用可能なJunit&Testフレームワークを少し知る必要があります。