2

RobotiumがサポートするTestdroidを使用しようとしています。

背景:( FragmentStatePagerAdapterとは異なりFragmentPagerAdapter)フラグメントにタグ値を割り当てないため、機能しませんwaitForFragmentByTag。その結果waitForFragmentById、私はを使用しますが、期待どおりに動作することができません。

私のフラグメントは、UIの構造とレイアウトを定義するxml(fragment.xml )で定義されています。私のフラグメントは、リスナーが登録されるコード( Fragment.java )などでも定義されています。

ExtSoloソースコードをデバッグしましたWaiterが、fragmentManager(両方)を呼び出すと、XMLの親要素の@idタグでR.id.fragment定義されたID()とファイル自体で定義されたID ( R.layout.fragment)の両方に対してnull値が返されます。 。

これらは使用する正しいID値ですか?そうでない場合は、何ですか?どんな助けでも大歓迎です。

4

2 に答える 2

0

Robotium は FragmentManager とメソッド findFragmentById/findFragemntByTag に基づいています。サンプル アプリケーション Support4Demos を使用して、状態ページャーでフラグメントを確認しました。これは、コンテキストに似ているようです。このコードの使用:

List<Fragment> fragList = new ArrayList<Fragment>();

@Override
public void onAttachFragment (Fragment fragment) {
    if (!fragList.contains(fragment)) {
        fragList.add(fragment);
        Log.d("TEST", "Fragment id ("+ fragment.getId() +")");
        if (fragment.getId() != View.NO_ID && fragment.getId() != 0) {
            String id = fragment.getResources().getResourceEntryName(
                    fragment.getId());
            Log.d("TEST", "Fragment id " + id);
        }
    }
}

フラグメントのIDを確認できます。残念ながら、いずれも id が ViewPager か id = 0 になっているため、id で区別することはできないようです。お役に立てるかわかりませんが、お役に立てれば幸いです。

于 2013-02-25T12:35:24.943 に答える
0

構造が変更された場合にテストが失敗する厄介な回避策を使用することになりました。

private void assertAtHomeFragment() {
    assertTrue(solo.waitForView(ListView.class, 1, 2000));
    assertTrue(solo.waitForView(ImageButton.class, 3, 2000));
    assertTrue(solo.waitForView(Button.class, 1, 2000));
    solo.sleep(1000);
}

private void assertAtLibraryFragment() {
    assertTrue(solo.waitForView(ListView.class, 1, 2000));
    assertTrue(solo.waitForView(ImageButton.class, 0, 2000));
    solo.sleep(1000);
}
于 2013-04-04T04:47:43.170 に答える