Выбор даты теста из фрагмента диалога с использованием Robolectric - PullRequest
0 голосов
/ 26 марта 2019

Я хочу проверить, что, когда я нажимаю на EditText, диалоговое окно DatePicker, которое я создал из DialogFragment Откройте и заполните EditText с выбранной датой

Яиспользуя Robolectric, но Robolectric видит мой диалог как AlertDialog вместо DatePicker Dialog Вот сообщение об ошибке:

java.lang.ClassCastException: android.app.AlertDialog cannot be cast to android.app.DatePickerDialog 

Test

@Test
public void endDateBeforeStartDateAlert() throws Exception {
    EditText endDate = activity.findViewById(R.id.end_date);
    endDate.performClick();
    DatePickerDialog dialog = (DatePickerDialog) ShadowDatePickerDialog.getLatestDialog();
    dialog.updateDate(2013, 10, 23);
    assertEquals("10/23/2013", endDate.getText().toString());
}

DatePickerDialog

public class PickDateDialog extends DialogFragment implements DialogInterface.OnClickListener{

public static final String TAG = "PickDateDialog";

//views
private DatePicker datePicker;

public PickDateDialog() {}

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.createCallbackToParent();
}

@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
    final DatePickerDialog.Builder datePickerDialog = new DatePickerDialog.Builder(getActivity());
    datePicker = new DatePicker(getActivity());
    datePickerDialog.setView(datePicker);
    datePickerDialog.setPositiveButton(getString(R.string.ok_button), this);
    datePickerDialog.setNegativeButton(getString(R.string.cancel_button), this);

    return  datePickerDialog.create();
}

 @Override
public void onClick(DialogInterface dialogInterface, int button) {
    if(button == BUTTON_POSITIVE){
        this.setDate();
        mCallback.onOkButtonListener(calendar, viewId);


    }
    if(button == BUTTON_NEGATIVE){
        dialogInterface.cancel();

    }

 }
}

Любая идея о том, как я могу проверить мой DatePicker?Спасибо за ваше время

...