Как выполнить модульное тестирование, если активность была изменена в Android Studio - PullRequest
0 голосов
/ 11 ноября 2018

Я хотел бы проверить, работает ли мой метод "OnClick", который перенаправляет меня на другой вид деятельности. Но я понятия не имею, как это сделать в модульном тесте ..

public void onClickManageServiceButton(View view){ 
    Intent intent = new Intent(getApplicationContext(), ServiceManagement.class);
    startActivity(intent);

Ответы [ 2 ]

0 голосов
/ 11 ноября 2018

Вы можете сделать это легко с помощью Espresson Intents API :

В вашем тесте настройте IntentsTestRule, который будет записывать намерения, которые были уволены.

@Rule public IntentsTestRule<MyActivity> intentsTestRule =
    new IntentsTestRule<>(MyActivity.class);

В своем тесте запустите свою деятельность, запустите тестируемый метод и подтвердите:

@Test
public void onClickManageServiceButton() {
    // By default the rule launch your activity, so it's running by the time test starts

    // Assuming the method to test is on your activity under test...
    // You many need to find a View or mock one out to pass to the method.
    mIntentsTestRule.getActivity().onClickManageServiceButton(null);

    // Espresso will have recorded the intent being fired - now use the intents
    // API to assert that the expected intent was launched...
    Intents.intended(hasComponent(ServiceManagement.class.getName()));
}

Проверьте ссылки класса Intents и IntentMatchers , чтобы узнать больше о том, что вы можете сделать, чтобы утверждать, что намерения запущены.

Надеюсь, это поможет!

0 голосов
/ 11 ноября 2018

Вы должны использовать Robolectric, чтобы проверить это.

Добавьте тестовую реализацию в Gradle для Robolectric http://robolectric.org/getting-started/

@RunWith(RobolectricTestRunner.class) 
public class ACTUAL_ACTIVITYTest {

@Test
public void clickingLogin_shouldStart ServiceManagementActivity() {
    WelcomeActivity activity = Robolectric.setupActivity(ACTUAL_ACTIVITY.class);
    activity.onClickManageServiceButton(null);

    Intent expectedIntent = new Intent(activity, ServiceManagement.class);
    Intent actual = shadowOf(RuntimeEnvironment.application).getNextStartedActivity();
    assertEquals(expectedIntent.getComponent(), actual.getComponent());
} }

где ACTUAL_ACTIVITY - это действие, в котором у вас есть метод onClickManageServiceButton.

Трюк: «Нажмите CMD + SHIFT + T» в классе занятия, и у вас будет быстрое действие для создания теста для этого занятия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...