2017-03-22 5 views
-1

私はMyFragmentをテストするためにEspressoでテストを書いています。 OK。エスプレッソからの呼び出しはどのようにフラグメントカスタムメソッドですか?

カスタムメソッドcustomUpdateを呼び出す必要があり試験方法への書き込み()MyFragmentで:フラグメント(MyFragment)変更カーソルで

@Rule 
    public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule<>(MainActivity.class, true, false); 

@Before 
    public void init() { 
     mActivityRule.launchActivity(intent); 

     // Here forward to MyFragment 
     onView(withId(R.id.myTextView)).perform(click()); 
    } 

    @Test 
    public void searchAddFavorite() { 
     // update column in db 
     MyService.updateColumn(context, 123, Profile.MY_COLUMN_NAME, false); 

     // here need to call fragment custom method customUpdate() 

     onView(withId(R.id.searchView)).perform(click()); 
    } 

カスタム方法。

private void customUpdate() { 
    cursor = MyService.getCursor(context, someFilter, true); 
    contactAdapter.changeCursor(cursor); 
} 

どうすればいいですか?

答えて

0

答えはかなり簡単です:あなたのアクティビティにあるフラグメントのインスタンスを取得し、メソッドを呼び出す必要があります。

これはどのようにすることができますか、主にアクティビティでフラグメントを追加する方法に依存します。取引中にtagを使用していますか? そうでなければ、おそらくそうでしょう。インスタンスを取得する最も簡単な方法を提供します。あなたはそのチェックを行う方法がわからない場合this。あなたがタグyourTagを使用する場合は

は、その後、あなたがそのような何かを行うことができます:あなたがここにUIテストを実行する必要がありますように、それは本当に鳴らない私のために、言った


@Test 
public void searchAddFavorite() { 
    // update column in db 
    MyService.updateColumn(context, 123, Profile.MY_COLUMN_NAME, false); 

    MyFragment fragment = (MyFragment) mActivityRule.getActivity() 
           .getSupportFragmentManager().findFragmentByTag("yourTag"); 
    fragment.customUpdate(); 

    onView(withId(R.id.searchView)).perform(click()); 
} 
。定期的な単体テストを調べる必要があるようです。

関連する問題