Этот вопрос касается того, чтобы делать тестовые случаи для Android независимо от даты, когда они запускаются, даже если тестируемый контент зависит от системной даты телефона/эмулятора.Как исправить дату для тестового случая Android-Espresso
Я хочу протестировать представление в своем приложении для Android с помощью эспрессо, которое зависит от текущей даты. Это в основном календарь: У меня есть ListView
с одной строки на каждый день, и я могу нажать на день, чтобы получить подробный вид на день:
<ListView
android:id="@android:id/list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/toolbar"
android:layout_centerVertical="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:headerDividersEnabled="false"/>
Но интересная часть моего вопроса является ActionBar
:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/toolbar"
android:minHeight="?attr/actionBarSize"
android:background="@color/cp_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:showIn="@layout/activity_month_time_record">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Toolbar Title"
android:layout_gravity="center"
android:id="@+id/toolbar_title"
style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"/>
</android.support.v7.widget.Toolbar>
В текстовом режиме вы увидите, что будет отображаться дата выбранного дня, например «Wed, 4. May '16». Конечно, когда будет загружен месяц, отобразится текущий месяц. Это делает тест в зависимости от текущей даты. Когда я выполняю
onData(anything()).inAdapterView(withId(android.R.id.list)).atPosition(5)
.perform(click());
ActionBar
покажет «Wed, 4. '16 мая», если я запускаю этот тест в мае 2016 года, но «Sat, 4. Июнь '16», если я запускаю этот тест в Июнь 2016.
Так как я могу сказать Espresso, чтобы исправить дату для этого теста на определенный день?
Вы не можете сделать это с помощью эспрессо. Espresso - это только библиотека для тестов ui. Для логических операций вы должны использовать другие платформы тестирования, такие как Mockito. –