1

TouchUtils.clickView()アプリのテストで別の画面に移動するために使用しようとしています。への呼び出しはclickView常に間違ったビューをクリックします:

public void navigateToWorkout(int i) {
    mMonitor = mWorkout.setMonitor(mInstrumentation);
    final LinearLayout clickme = (LinearLayout) mWorkouts.getChildAt(i);
    pc.runOnUiThread(
        new Runnable(){
            public void run(){
                clickme.setBackgroundColor(Color.CYAN);
            }
        }
    );
    try { Thread.sleep(500); } catch (Exception e) {}
    TouchUtils.clickView(MyApplicationTest.this, clickme);
    mWorkout.getFromMonitor(mMonitor);
}

正しい項目 ( LinearLayout) がListViewシアンに変わり、0.5 秒後に への呼び出しによって、フォーカスclickViewのある でクリック イベントが生成されますEditText( の目に見えるフラッシュで示されますEditText)。

エミュレーターで新しく CYANed された項目をクリックするだけListViewで、項目をクリックして別の画面に移動しようとするまで、テストが再び機能し始めListViewます。次に、もう一度、EditTextフォーカスのある をクリックして、アイテムを手動でクリックしない限り動かなくなります。

このプロジェクトを何ヶ月も機能していた古いデスクトップから新しいラップトップにインポートして以来、これは機能していません。2つを並べて比較できればいいのですが、古いデスクトップは恐ろしい死を遂げ、開発のためにラップトップに切り替えるようになりました。

ハンドラーまたは呼び出しようとしているビューにさらにコードを提供することもできますOnClickが、手動で数回クリックするだけでアプリが機能します。私の悩みはすべてテストにあります。私はこの仕事をしようとすることにかなり固執しており、どんな提案も喜んで試していきます.

4

1 に答える 1

0

AndroidManifest.xml に最小および最大のターゲット SDK を追加すると、うまくいきました。この回答からアイデアを得ました(詳しく説明しました)。テスト中のプロジェクト (テスト プロジェクトではない) で、次の行を AndroidManifest.xml に追加しました。

<uses-sdk android:targetSdkVersion="17" android:minSdkVersion="17"/>

そして、TouchUtils のすべての使用が再び一貫して動作し始めました。もう面倒な回避策はありません。

于 2013-12-04T04:28:40.930 に答える