Robotiumテストは失敗します:junit.framework.assertionfailederror:ビューをクリックできません!

StackOverflow https://stackoverflow.com/questions/3911419

質問

私は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フレームワークを少し知る必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top