Я использую огурец и эспрессо. У меня есть следующий файл функций:
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
после первого теста?