LoginSignup
3
2

More than 5 years have passed since last update.

EspressoでIntentのExtraにデータをわたしてActivityを起動する話

Posted at

Espressoで、Activityの単体テストをする場合、IntentのExtraで対象となるActivityに情報を渡したいときがあります。

そういった場合は、ActivityTestRuleをコンストラクタで、3番目の引数にfalseを渡せば、勝手にActivityを起動しなくなります。

@RunWith(AndroidJUnit4.class)
public class FooActivityTest {

    @Rule
    public ActivityTestRule<FooActivity> activityRule = new ActivityTestRule<>(FooActivity.class, false, false);

    :
}

この引数は省略したときはtrueになり、その場合、@Testメソッド毎に、最初の@Beforeメソッドが実行される前に、Activityが起動します。

falseを指定すると、Activityが自動的に起動しなくなるので、@BeforeメソッドでIntentを使って明示的に起動します。

@RunWith(AndroidJUnit4.class)
public class FooActivityTest {

    @Rule
    public ActivityTestRule<FooActivity> activityRule = new ActivityTestRule<>(FooActivity.class, false, false);

    :

    @Before
    public void setup() {
        :
        Intent intent = new Intent();
        intent.putExtra("bar", 1);  //必要なデータを渡す
        activityRule.launchActivity(intent);
    }

    :
}

このとき、ClassNameなどは、ActivityTestRuleのlaunchActivity()メソッド内でセットしてくれるので、必要なExtraの設定だけでかまいません。

@Beforeメソッドが複数ある場合は、実行順序に気をつけなければならなくなるので、ひとつのメソッドにまとめた方が良さそうです。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2