![](/img/trans.png)
[英]Is there a way to execute a single Robolectric 2.3 test (using Gradle)?
[英]Is there a way to test pickers with Robolectric?
我正在關注Android開發人員的教程。 現在我的班級看起來像這樣:
public class DatePickerFragment extends DialogFragment implements
DatePickerDialog.OnDateSetListener {
final Calendar calendar = Calendar.getInstance();
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
return new DatePickerDialog(getActivity(), this,
calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),
calendar.get(Calendar.DAY_OF_MONTH));
}
@Override
public void onDateSet(DatePicker view, int year, int month, int day) {
calendar.set(year, month, day);
Datable datable = (Datable) view.getContext();
datable.setDate(calendar.getTime());
}
}
如果我嘗試運行如下所示的測試,我在第一個getDataPicker()
上得到一個NullPointerException。 我想檢查默認日期是否為今天。
@Test
public void testDatePickerFragment() {
final Calendar calendar = Calendar.getInstance();
int expectedYear = calendar.get(Calendar.YEAR);
int expectedMonth = calendar.get(Calendar.MONTH);
int expectedDay = calendar.get(Calendar.DAY_OF_MONTH);
DatePickerFragment fragment = new DatePickerFragment();
FragmentActivity activity = Robolectric
.buildActivity(FragmentActivity.class).create().start()
.resume().get();
FragmentManager fragmentManager = activity.getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager
.beginTransaction();
fragment.show(fragmentManager, "datePicker");
fragmentTransaction.commit();
DatePickerDialog dialog = (DatePickerDialog) ShadowDatePickerDialog
.getLatestDialog();
assertThat(dialog, is(not(nullValue())));
assertThat(dialog.getDatePicker().getDayOfMonth(), is(expectedDay));
assertThat(dialog.getDatePicker().getMonth(), is(expectedMonth));
assertThat(dialog.getDatePicker().getYear(), is(expectedYear));
}
我希望能夠在不在活動中使用它來測試這個類(在這種情況下,我相信我可以使用buildActivity
方法,然后使用ShadowDatePickerDialog
但這是下一步)。
那么,是否可以測試datePicker? 我正在使用robolectric 2.2
它適用於新版Robolectric 3.X. 你可以嘗試這樣的事情:
startDate.performClick();
DatePickerDialog dialog = (DatePickerDialog) ShadowDatePickerDialog.getLatestDialog();
dialog.updateDate(2013, 10, 23);
dialog.getButton(DatePickerDialog.BUTTON_POSITIVE).performClick();
assertEquals("2013-11-23", startDate.getText().toString());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.