16

私のアプリはの1つをActivityで構成します。Android Espresso:複数のフラグメントアーキテクチャに1つのアクティビティを従うときに特定のフラグメントをテストするには

FragmentsのUIをエスプレッソでテストしたいと考えています。しかし、私は問題に遭遇しました。

FragmentActivityに追加されていないことをどうすればonCreateにテストできますか?私がFragmentsで見たすべての例は、FragmentonCreateに追加されています。 それでは、エスプレッソに特定のFragmentに行き、そこで始めるように指示するにはどうすればよいですか?

おかげ

答えて

0

エスプレッソは、彼らが表示されている場合にのみ、Fragmentsをテストすることができます。そしてそれはそれらがActivityによって表示されることを必要とします。

現在の設定では、実際にテストしたいFragmentにエスプレッソをclick()まで(ユーザーのように)使用する必要があります。

私のプロジェクトの1つでは、ViewPagerFragmentsと表示されています。それらについてはFragments私は孤立してそれらをテストするためにカスタムFragmentTestRuleを使用します。それぞれFragmentを直接起動し、エスプレッソを使ってテストすることができます。 this answerを参照してください。

またできます

  • Fragmentsを使用しないでください。 Activitiesは簡単にテストできます。それぞれActivityを単独でテストすることができます。ほとんどの場合FragmentsActivitiesを超える利点はありません。 Fragmentsは実装とテストを難しくしています。
  • あなたのFragmentActivityが作成されたときに特定のFragmentを直接表示できるようにします。例えば。あなたの特別な意図をFragmentActivityに追加してください。しかしこれはあなたのアプリにテストコードを追加しますが、これは一般的には良い解決策ではありません。
+15

フラグメントを使用しないでください。 –

+0

[FragmentTestRule](https://github.com/21Buttons/FragmentTestRule)リンクされた回答の実装です。 –

+7

フラグメントはアクティビティよりも高速にロードされます(メモリにプリロードすることもできます)ので、コンポーネントのモジュール化と再利用が可能で、フルスクリーンで表示する必要はありません(他のビューと同様にレイアウトに配置できます) )。 フラグメンテーションは、アクティビティの多くを改善するため、非常に人気があります。フラグメントが利点を提供しないと言うのは信じられないほど不正確であり、それらを使用する利点はテストの難易度をはるかに上回ります。 – OldSchool4664

関連する問題