Testing that button starts an Activity with Robolectric

后端 未结 8 963
眼角桃花
眼角桃花 2020-12-24 11:25

Hi I have the following code:

@RunWith(Test9Runner.class)
public class MainActivityTest 
{
    private MainActivity activity;
    private Button pressMeButto         


        
8条回答
  •  抹茶落季
    2020-12-24 11:57

    In Robolectric 2.1.1 you can verify if Intent starting new Activity was emitted in following way.

    @RunWith(RobolectricTestRunner.class)
    public class MyTest {
      private ShadowActivity shadowActivity;
      private MyActivity activity;
    
      @Before
      public void setup() {
        activity = new MyActivity();
        shadowActivity = Robolectric.shadowOf(activity);        
      }
    
      @Test
      public shouldStartNewActivityWhenSomething() {
        //Perform activity startup
        //Do some action which starts second activity, for example View::performClick()
        //...
        //Check Intent
        Intent intent = shadowActivity.peekNextStartedActivityForResult().intent;
        assertThat(intent.getStringExtra(MySecondActivity.EXTRA_MESSAGE)).isEqualTo("blebleble");
        assertThat(intent.getComponent()).isEqualTo(new ComponentName(activity, MySecondActivity.class));
      }
    }
    

    This is similar to what I am doing. Please note that creating Activity by calling new Activity() will make Robolectric print warnings about creating activity improperly, this probably can be done better...

提交回复
热议问题