这个问题是关于让Android测试用例独立于日期,运行时,即使正在测试的内容取决于手机/模拟器的系统日期。
我想在我的Android应用程序中使用Espresso测试视图,这取决于当前日期。它基本上是一个日历:我有一个<?php
$img = resize_image('../images/avatar/demo.jpg', 120, 120);
ob_start();
imagejpeg($img);
$output = base64_encode(ob_get_contents());
ob_end_clean();
?>
<img src="data:image/jpeg;base64,<?= $output; ?>"/>
,每天有一行,我可以点击一天来获取当天的详细信息视图:
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
您看到的TextView将显示所选日期的日期,例如“Wed,4 May '16”。当然,加载月视图时,将显示当前月份。这使得测试取决于当前日期。当我表演时
<?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>
如果我在2016年5月进行此测试,但是“2016年6月4日星期六”,如果我在2016年6月进行此测试,则onData(anything()).inAdapterView(withId(android.R.id.list)).atPosition(5)
.perform(click());
将显示“星期三,4月4日”。
那么我如何告诉Espresso将此测试的日期修复到某一天?
答案 0 :(得分:0)
我有同样的需要使用固定的日期时间。我的解决方案是创建一个包装类来访问当前日期/时间。这个类被设计为单例,在我的测试中,我用一个新的替换静态单例实例。这个新的配置为始终报告相同的“当前”日期/时间,并可以更改为新的日期/时间。