Как нажать на переключатель в тесте 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.!!!