@TestTargets({ @TestTargetNew( level = TestLevel.COMPLETE, method = "requery", args = {}), @TestTargetNew( level = TestLevel.COMPLETE, method = "getCount", args = {}) }) public void testRequery() { final String DELETE = "DELETE FROM " + TABLE_NAME + " WHERE number_1 ="; final String DELETE_1 = DELETE + "1;"; final String DELETE_2 = DELETE + "2;"; SQLiteCursor cursor = getCursor(); MockObserver observer = new MockObserver(); cursor.registerDataSetObserver(observer); mDatabase.execSQL(DELETE_1); // first time run getCount, it will refresh CursorWindow. assertEquals(TEST_COUNT - 1, cursor.getCount()); assertFalse(observer.hasChanged()); mDatabase.execSQL(DELETE_2); // when getCount() has invoked once, it can no longer refresh CursorWindow. assertEquals(TEST_COUNT - 1, cursor.getCount()); assertTrue(cursor.requery()); // only after requery, getCount can get most up-to-date counting info now. assertEquals(TEST_COUNT - 2, cursor.getCount()); assertTrue(observer.hasChanged()); }