【发布时间】:2013-07-21 09:38:02
【问题描述】:
我正在尝试清除测试期间添加的所有 SharedPreferences。我已经阅读了一些帖子和官方文档 (SharedPreferences.Editor.clear())。但是当我在单元测试运行后启动我的应用程序时,我仍然找到了测试值。
所以,在AndroidTestCase.tearDown(),我做了这个:
public class PrivateStorageUtilsTest extends AndroidTestCase {
private static final String KEY_SP_PACKAGE = "PrivateStorageUtilsTest";
protected void setUp() throws Exception {
super.setUp();
// Clear everything in the SharedPreferences
SharedPreferences sharedPreferences = getContext()
.getSharedPreferences(KEY_SP_PACKAGE, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.clear();
editor.commit();
}
protected void tearDown() throws Exception {
// Clear everything in the SharedPreferences
SharedPreferences sharedPreferences = getContext().
getSharedPreferences(KEY_SP_PACKAGE, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.clear();
editor.commit();
}
}
我在 SO 上发现的所有其他问题都是关于在 clear() 之后添加 commit(),我已经在这里完成了。
EDIT 1添加setUp()方法
EDIT 2提供扩展类
【问题讨论】:
-
您是否使用相同的上下文来写入和清除 SharedPreferences?
-
Context是AndroidTestCase类提供的。另外,当我启动我的应用程序时,我仍然调用
getContext()。如果你愿意,我可以为你提供我的单元测试的setUp()方法。 -
是的,它可能更好。您是否知道,当您运行测试时,设备测试会更新不同的 apk?
-
添加了 setUp() 方法。不,我不知道这个事实。所以,如果不是同一个 APK,仍然需要测试值真的很奇怪,不是吗?
-
你在扩展什么类?
标签: android unit-testing sharedpreferences android-testing