4

AndroidTest ケースと Mockito で Fragment をテストしたい (私は他のテスト ケースに mockito を使用しています)。

以前に独自のコード (別の方法でコーディング) でこれを行ったことがありますが、今回は Fragment をテストしており、この呼び出しをモックしたいと考えています。

TestClass の一部と、テストしたい Fragment の一部をここに示します。アイデアや提案をお寄せいただきありがとうございます。

public class MyFragmentTest extends
    ActivityInstrumentationTestCase2<MyActivity>{

    MyFragment myFragment;

    public MyFragmentTest () {
        super(MyActivity.class);
    }

   @Override
    public void setUp() throws Exception {
        super.setUp();

        // This have to be done because of some issues with dexmaker
        System.setProperty("dexmaker.dexcache", "/sdcard");
        // This have to be done because of the sharedUserId problem
        Thread.currentThread().setContextClassLoader(
            getClass().getClassLoader());

        myFragment = new MyFragment() {
             //I can override methods here
        };

    }

    public void testMyMethod() throws Exception {
        myFragment.methodThatIWantToTest();
    }

}


 /************  CLASS THAT I WANT TO TEST *********/
public class MyFragment extends Fragment{

     public void methodThatIWantToTest(){
        /*..... more lines */
        final PackageManager packageManager = getActivity().getPackageManager();
        /*..... more lines ...*/
     }

}

4

1 に答える 1

0

私はこのハックを採用しました:

// Needed because Fragment.mActivity is package-private
package android.support.v4.app;

public class FragmentInjector {
    public static void injectActivity(Fragment fragment, FragmentActivity fragmentActivity) {
        fragment.mActivity = fragmentActivity;
    }
}

あるいは、リフレクションを使用して の値を変更することもできますfragment.mActivity。私は他の方法を知りません。

于 2013-08-21T19:08:50.143 に答える