how to JUnit test ContentResolver.notifyChange

Viewed 2691

I'm writing tests for a ContentProvider, in insert I'm notifying about changes with getContext().getContentResolver().notifyChange(mUri, null);

my tests class extends ProviderTestCase2. I created the following mock ContentObserver class:

private class ContentObserverMock extends ContentObserver {
    public boolean changed = false;

    public ContentObserverMock(Handler handler) {
        super(handler);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onChange(boolean selfChange) {
        changed = true;
    }

    @Override
    public boolean deliverSelfNotifications() {
        return true;
    }
}

and this is the test case:

public void testInsertNotifyContentChanges() {
    ContentResolver resolver = mContext.getContentResolver();
    ContentObserverMock co = new ContentObserverMock(null);

    resolver.registerContentObserver(CONTENT_URI, true, co);

    ContentValues values = new ContentValues();
    values.put(COLUMN_TAG_ID, 1);
    values.put(COLUMN_TAG_CONTENT, "TEST");

    resolver.insert(CONTENT_URI, values);
    assertTrue(co.changed);
}

seems like onChange is never called, I also tried ContentObserverMock co = new ContentObserverMock(new Handler()); with the same result.

what am I doing wrong here ?

2 Answers
Related