【问题标题】:After running unit test, SQLite seems auto cleared but SharedPreferences doesn't. Is it right?运行单元测试后,SQLite 似乎自动清除,但 SharedPreferences 没有。这样对吗?
【发布时间】:2016-07-01 18:17:49
【问题描述】:

运行我的插桩单元测试后,我发现 SQLite 数据似乎已自动清除,但 SharedPreferences 文件仍保留在我的设备中。我错了吗?在这两种情况下,我都使用相同的模拟上下文来创建 SQLiteOpenHelper 和 SharedPreferences。

下面列出了简化的代码sn-p。

@RunWith(AndroidJUnit4.class)
public class MyTest {

    Context mMockContext;

    @Before
    public void setUp() {
        mMockContext = new RenamingDelegatingContext(InstrumentationRegistry.getInstrumentation().getTargetContext(), "test_");
    }

    @Test
    public void testSQLite() throws Exception {
        MySQLiteOpenHelper dbHelper = new MySQLiteOpenHelper(mMockContext);
        ...
    }

    @Test
    public void testSharedPreferences() throws Exception {
        SharedPreferences settings = mMockContext.getSharedPreferences("Foo", 0);
        ...
    }
}

【问题讨论】:

    标签: java android sqlite android-studio


    【解决方案1】:

    是的,如果你不手动删除这些资源,这些资源仍然存在。

    要使测试与其他测试隔离,请考虑在以下任一位置清理这些资源:

    @AfterClass
    public void tearDownClass() { }
    

    或:

    @After
    public void tearDown() {}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-21
      • 1970-01-01
      • 2014-11-11
      • 2022-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-24
      相关资源
      最近更新 更多