Espresso Test Recorder로 UI 테스트를 만드는 데 걸리는 시간을 줄이십시오.

AndroidStudio2.2에서 사용할 수있는 Espresso Test Recorder를 사용해 보았습니다.
Espresso 에서 UI 테스트 쓰는 분도 많을까 생각합니다만, 조작 기록을 테스트 코드에 일으켜 주는 툴입니다.
UI 테스트 작성에 걸리는 공수 삭감에 연결하면 좋네요.

개인적으로는 업무의 앱 개발로, Quality 향상을 위해 UIAutomator나 Espresso로 UI 테스트 작성을 시도한 적이 있습니다.
하지만 직접 작성하면 시간이 걸리므로 개발 프로세스에 걸릴 수는 없었습니다.
그리고 UI 테스트 작성을 임의로 하면, 개발 멤버는 시간이 없고 대체로 모두 UI 테스트 쓰지 않게 됩니다. (매니저 측은 보수보다 기능 대응 우선으로 생각하기 쉽고)

준비


  • 2016/7/1 현재 AndroidStudio2.2의 정식 버전은 출시되지 않았으므로 미리보기 버전을 설치합니다.
  • 자세한 내용은 생략합니다.
  • build.gralde 주위의 설정은 후술합니다만, 최초 작성시에 자동으로 추가해 줍니다.

  • 사용법



    AndroidStudio 메뉴에서 Run > Record Espresso Test를 선택합니다.


    [Record Your Test] 대화 상자가 일어나므로 앱에서 테스트하고 싶은 조작을 수행합니다 (쇼보 앱입니다). 조작한 기록이 대화 상자에 기록됩니다.
    1. NavigatoinDrawer 열기
    2. 가나자와 노라쿠 미술관을 탭
    3. 툴바가 존재하는지 확인


    적당히 툴바가 존재하는지 체크하도록 했습니다만, 조작 3과 같이 어설션 정의도 녹화중에 추가할 수 있습니다.
    오른쪽 캡처 화면에서 항목을 클릭하여 항목을 선택할 수도 있습니다.

    생성된 코드



    실제로 생성된 테스트 코드는 이쪽.

    MainActivityTest2.java
    package com.kanazawaevent.view.activity;
    
    
    import android.support.test.espresso.ViewInteraction;
    import android.support.test.rule.ActivityTestRule;
    import android.support.test.runner.AndroidJUnit4;
    import android.test.suitebuilder.annotation.LargeTest;
    
    import com.kanazawaevent.R;
    
    import org.junit.Rule;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    
    import static android.support.test.espresso.Espresso.onView;
    import static android.support.test.espresso.action.ViewActions.click;
    import static android.support.test.espresso.assertion.ViewAssertions.matches;
    import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
    import static android.support.test.espresso.matcher.ViewMatchers.withContentDescription;
    import static android.support.test.espresso.matcher.ViewMatchers.withId;
    import static android.support.test.espresso.matcher.ViewMatchers.withParent;
    import static android.support.test.espresso.matcher.ViewMatchers.withText;
    import static org.hamcrest.Matchers.allOf;
    
    @LargeTest
    @RunWith(AndroidJUnit4.class)
    public class MainActivityTest2 {
    
        @Rule
        public ActivityTestRule<MainActivity> mActivityTestRule = new ActivityTestRule<>(MainActivity.class);
    
        @Test
        public void mainActivityTest2() {
            ViewInteraction imageButton = onView(
                    allOf(withContentDescription("Open navigation drawer"),
                            withParent(withId(R.id.toolbar)),
                            isDisplayed()));
            imageButton.perform(click());
    
            ViewInteraction textView = onView(
                    allOf(withText("金沢能楽美術館"), isDisplayed()));
            textView.perform(click());
    
            ViewInteraction viewGroup = onView(
                    allOf(withId(R.id.toolbar), isDisplayed()));
            viewGroup.check(matches(isDisplayed()));
    
        }
    }
    

    보충



    처음 조작 녹화를 마치고 완료하려고 했을 때, 아래의 다이얼로그가 나와 YES를 선택하면 이하의 build.gradle 주위의 설정을 해 줍니다.


    build.gradle
    android {
        defaultConfig {
            
            
            
            testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner'
        }
    }
    
    dependencies {
        
        
        compile 'com.android.support.test.espresso:espresso-core:2.2.2'
        compile 'com.android.support.test:runner:0.5'
    }
    

    요약



    테스트하려는 내용에 따라 미세 수정이 필요할 수 있습니다.
    프레임워크 작성에는 사용할 수 있을까라고 개인적으로는 생각하고 있습니다만, 어떻습니까.

    좋은 웹페이지 즐겨찾기