Уничтожение всех действий перед запуском второго теста с Espresso на Android - PullRequest
0 голосов
/ 06 июля 2018

Я использую огурец и эспрессо. У меня есть следующий файл функций:

Feature: From Main to Profile 

  Background:
    Given User is registered
    And User is logged in

  @ios @android   Scenario: User can navigate from the home screen to the profile screen
    Given User is on the home screen
    When User taps Profile
    Then User is navigated to the profile screen

  @ios @android   Scenario: User can navigate from the profile screen back to the home screen
    Given User is on the Profile screen
    When User taps back
    Then User is navigated back to the home screen

на шаге, определяющем Then User is navigated to the profile screen Мне пришлось добавить pressBack, иначе запуск MainActivity для второго теста не работал (истекло время ожидания), и я мог видеть на эмуляторе, что ProfileActivity все еще был показан.

Это steps класс:

public class MainActivitySteps extends BaseActivitySteps {

    public static final int PROFILE_BUTTON_ID = R.id.tvProfile;

    @Rule
    public ActivityTestRule<MainActivity> activityTestRule = new ActivityTestRule<>(MainActivity.class);
    @Rule
    public GrantPermissionRule permissionRule = GrantPermissionRule.grant(android.Manifest.permission.ACCESS_FINE_LOCATION);

    @Before
    public void setup() {
        activityTestRule.launchActivity(new Intent());
        activity = activityTestRule.getActivity();
        Intents.init();
    }

    @After
    public void tearDown() {
        activityTestRule.finishActivity();
        Intents.release();
    }

    @Given("^User is on the home screen")
    public void userIsAtMainScreen() {
        assertTrue(activity.findViewById(R.id.btnRecordTrip).getVisibility() == View.VISIBLE);
    }

    @When("^User taps Profile")
    public void userTapsProfile() {
        // wait for view to become visible
        userTaps(PROFILE_BUTTON_ID);
    }

    @Given("^User is on the Profile screen")
    public void userIsAtProfileScreen() {
        userTaps(PROFILE_BUTTON_ID);

    }

    @Then("^User is navigated to the profile screen")
    public void userIsNavigatedToTheProfileScreen() {
        intended(hasComponent(ProfileActivity.class.getName()));
        pressBack();
    }

    @When("^User taps back")
    public void userTapsBack() {
        pressBack();
    }

    @Then("^User is navigated back to the home screen$")
    public void userIsNavigatedBackToTheHomeScreen() {
        userIsAtMainScreen();
    }

}

Я нашел этот , который может быть полезен, но я нахожу удивительным, что мне нужно сделать это самостоятельно: мне кажется, что это такая базовая функция. Есть ли лучший способ убить ProfileActivity после первого теста?

...