2016-06-16 3 views
4

내 응용 프로그램 중 하나에 대한 자동화 된 테스트를 작성하고 싶습니다. 모든 기능에는 로그인이 필요합니다.Espresso + Junit4 - 모든 테스트를 실행하기 전에 한 번 로그인하십시오.

그래서 필자는 테스트를 작성했지만 각 테스트마다 로그인을 수행하고 기능을 테스트하고 있습니다. 어쨌든 한 번만 로그인 한 다음 모든 테스트를 실행하는 데 도움이됩니까?

가장 쉬운 방법은 하나의 테스트 방법으로 모든 테스트를 작성하는 것입니다. 그러나 나는 그것을 성취하는 것이 추악한 방법 일 것이라고 생각합니다. 모든 클리너 솔루션이므로 테스트는 한 번만 로그인 한 다음 테스트 세트를 실행합니다.

@RunWith(AndroidJUnit4.class) 
public class AllDisabledTest { 
    public static final String USER_NAME = "all_disabled"; 
    public static final String DISPLAY_NAME = "All Disabled"; 
    public static final String PASSWORD = "1234"; 

    @Rule 
    public ActivityTestRule<LoginActivity> mActivityRule = new ActivityTestRule<>(
      LoginActivity.class); 

    @Before 
    public void loginToApp(){ 

     onView(withId(R.id.edit_email)).perform(replaceText(USER_NAME)); 
     onView(withId(R.id.edit_password)).perform(replaceText(PASSWORD)); 

     onView(withId(R.id.login_button)).perform(click()); 
    } 

    @Test 
    public void checkIfFoodItemAddedToCart(){ 
     onData(anything()).inAdapterView(withId(R.id.menu_item_grid)).atPosition(2).perform(click()); 

     onData(anything()).inAdapterView(withId(R.id.listview)).atPosition(0).onChildView(withId(R.id.item_name)).check(matches(withText("BLUEITEM"))); 
    } 
} 

가 사전에 감사합니다 :) : 다음

내 테스트 코드입니다.

답변

3

@BeforeClass 및 @AfterClass 주석이있는 메소드를 사용할 수 있습니다.

@RunWith(AndroidJUnit4.class) 
public class AllDisabledTest { 
    public static final String USER_NAME = "all_disabled"; 
    public static final String DISPLAY_NAME = "All Disabled"; 
    public static final String PASSWORD = "1234"; 

    @Rule 
    public ActivityTestRule<LoginActivity> mActivityRule = new ActivityTestRule<>(
      LoginActivity.class); 
    } 

    @BeforeClass 
    public static void setUpBeforeClass() { 
     // do login stuff here 
    } 

    @AfterClass 
    public static void tearDownAfterClass() { 
     // ... 
    } 

    // ... 
} 

참고 : @BeforeClass 및 @AfterClass 메서드는 정적이어야합니다.

관련 문제