有时我们需要对文件或数据库进行测试,但我们又不想破坏应用程序或设备原有的数据。
此时我们就需要一个Mock来替代他们,这里的Mock不是android.test.mock,
但也是android.test包下面的,RenamingDelegatingContext
的类。
首个先我们创建一个应用,功能很简单就是读取该应用目录下的一个txt文件内容,并展示到应用的上。
public class MainActivity extends BaseActivity {
private TextView mTv;
public final static String FILE_NAME = "data.txt";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTv = (TextView) findViewById(R.id.tv);
}
@Override
protected void onStart() {
super.onStart();
loadText();
}
private void loadText() {
try {
FileInputStream fis = openFileInput(FILE_NAME);
int size = fis.available();
byte[] buffer = new byte[size];
fis.read(buffer);
mTv.setText(new String(buffer, 0, size));
fis.close();
} catch (Exception e) {
mTv.setText(e.toString());
mTv.setTextColor(Color.RED);
}
}
public String getText(){
return mTv.getText().toString();
}
}
运行一下,此时我们的包目录下没有data.txt
,页面显示的可能是个错误。
OK,然后我们创建两个文件。
一个名为data.txt
,一个 mock.data.txt
。
请先按这个名字写,后面有解释!!
前者用于应用中显示的文件内容,后者是作为测试Mock调用的。
echo "data" >data/data/com.example.test.mockeample/files/data.txt
echo "mock_data">data/data/com.example.test.mockeample/files/mock.data.txt
再次运行下,应该可以看到Activity上显示的是data