Bei dieser Frage geht es darum, Android-Testfälle unabhängig vom Datum zu machen, wenn sie ausgeführt werden, auch wenn der getestete Inhalt vom Systemdatum des Telefons/Emulators abhängt.So beheben Sie das Datum für einen Android-Espresso-Testfall
Ich möchte in meiner Android App eine Ansicht mit Espresso testen, die vom aktuellen Datum abhängt. Es besteht im Wesentlichen eines Kalender: Ich habe eine ListView
mit einer Zeile für jeden Tag und ich kann auf einen Tag klicken, um eine Detailansicht für den Tag zu kommen:
<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"/>
Aber der interessante Teil für meine Frage ist die 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>
die Textview Sie dort sehen Sie das Datum des ausgewählten Tages zeigen, zum Beispiel „Mi, 4. Mai '16“. Wenn die Monatsansicht geladen ist, wird natürlich der aktuelle Monat angezeigt. Das macht den Test abhängig vom aktuellen Datum. Als ich
führenonData(anything()).inAdapterView(withId(android.R.id.list)).atPosition(5)
.perform(click());
die ActionBar
wird "Mi, 4. Mai '16", wenn ich Mai 2016 diesen Test laufen, aber "Sat, 4. Jun '16", wenn ich diesen Test laufen in Juni 2016.
Wie kann ich Espresso sagen, das Datum für diesen Test auf einen bestimmten Tag zu fixieren?
Sie können dies nicht durch Espresso tun. Espresso ist nur eine Bibliothek für eigene Tests. Für logische Operationen sollten Sie ein anderes Testframework wie Mockito verwenden. –