Robolectric 에서 Activity 테스트하기

개발 이야기 2014. 7. 10. 20:49

Robolectric 에서 일반적인 연산 로직을 테스트 하는 것은 매우 쉽습니다. 일반적인 JUnit 테스트와 동일하기 때문입니다. Robolectric 을 이용하여 테스트 코드를 작성하는 가장 큰 이유는 UI 를 에뮬레이터 없이도 테스트 할 수 있기 때문이다.

UI 를 테스트하기 위해서 가장 기본은 뭐니뭐니해도 Activity 아니겠는가요? 연산 -> 결과 정상 반영을 확인 하기 위해서 Activity 를 올리는 것이 먼저 되어야 합니다.

그래서 오늘은 Activity 를 올리는 테스트를 먼저 해보도록 하겠습니다.

1. MyActivity.class

public class MyActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);
    }
}

2. activity_my.xml



    




Robolectric 에서 Activity 생성하기

3. MyActivityTest.class

@Config(manifest = "src/main/AndroidManifest.xml", emulateSdk = 18)
@RunWith(RobolectricGradleTestRunner.class)
public class MyActivityTest {

    private MyActivity myActivity;

    @Before
    public void setUp() throws Exception {

        myActivity = Robolectric.buildActivity(MyActivity.class).create().start().resume().get();

    }
}


Robolectric.buildActivity(Activity.class) 가 액티비티를 가상으로 만들어주는 메소드입니다.여기에 create, start, resume 은 해당 액티비티의 라이프 사이클을 동작시키는 메소드입니다.

위의 테스트 코드 중에서 중요한 것은 @Config 설정입니다.

manifest 를 설정해주셔야 하고, emulateSdk 값을 설정해줘야 테스트가 정상 수행됩니다.


그리고 다음과 같은 테스트 코드를 동작시켜보도록 하겠습니다.

    @Test
    public void testInit() throws Exception {

        assertNotNull(myActivity);
    }


테스트가 통과 하는 것을 확인 하실 수 있습니다.



설정

트랙백

댓글