Как нажать на переключатель в тесте Android Junit?

Я использовал приведенный ниже код для проверки и снятия флажка на компоненте "Переключатель" в Android. Как поставить галочку на утилиту Switch by touch в Android Junit Testing?

        // wait 2 seconds for the start of the activity
    final FinalizeCalibrationActivity finalActivity = (FinalizeCalibrationActivity) monitorFinalActivity
            .waitForActivityWithTimeout(2000);
    assertNotNull("FinalizeCalibrationActivity is null", finalActivity);

    final Switch swtSignedRdwPortal = (Switch) finalActivity
            .findViewById(R.id.swt_signed_rdw_portal);

    JunitUtils.waitTime(3);
    swtSignedRdwPortal.setChecked(false);

    JunitUtils.waitTime(3);
    swtSignedRdwPortal.setChecked(true);

1 ответ

Решение

Мы не можем использовать Switch view напрямую. Он будет выдавать ошибочные утверждения типа: "android-only-the-original-thread-that-made-a-view-иерархия-можно-коснуться-его-взгляды".

Я использовал переписать код, как это,

// wait 2 seconds for the start of the activity
    final FinalizeCalibrationActivity finalActivity = (FinalizeCalibrationActivity) monitorFinalActivity
            .waitForActivityWithTimeout(2000);
    assertNotNull("FinalizeCalibrationActivity is null", finalActivity);

    final Switch swtSignedRdwPortal = (Switch) finalActivity
            .findViewById(R.id.swt_signed_rdw_portal);

    JunitUtils.waitTime(3);
    finalActivity.runOnUiThread(new Runnable() {

        @Override
        public void run() {
            swtSignedRdwPortal.setChecked(false);
        }
    });

    JunitUtils.waitTime(3);
    finalActivity.runOnUiThread(new Runnable() {

        @Override
        public void run() {
            swtSignedRdwPortal.setChecked(true);
        }
    });

Это работает нормально для меня в Android Junit Test.!!!

Другие вопросы по тегам