wie JUnit test ContentResolver.notifyChange

8

Ich schreibe Tests für ein ContentProvider , in insert Ich benachrichtige Änderungen mit getContext().getContentResolver().notifyChange(mUri, null);

Meine Testklasse erweitert ProviderTestCase2 . Ich habe die folgende ContentObserver-Klasse erstellt:

%Vor%

und das ist der Testfall:

%Vor%

scheint wie onChange nie aufgerufen wird, habe ich auch ContentObserverMock co = new ContentObserverMock(new Handler()); mit dem gleichen Ergebnis versucht.

Was mache ich hier falsch?

    
Gal Ben-Haim 14.07.2012, 08:06
quelle

2 Antworten

4

ProviderTestCase2 verwendet MockContentResolver . Überprüfung des Quellcodes, es ist notifyChange Methode tut nichts.

%Vor%

Dein Szenario kann nicht mit ProviderTestCase2 getestet werden. Werfen Sie einen Blick auf ProviderTestCase3 , aber Es nutzt Android private Pakete.

Bearbeiten: Ich habe eine Bibliothek erstellt, die aus der neuen ProviderTestCase3 -Klasse als Ersatz für ProviderTestCase2 besteht, die Aufrufe von ContentResolver.notifyChanged internal an Beobachter behält, die mit ProviderTestCase3.registerContentObserver registriert sind. Sie können es verwenden, um Benachrichtigungen über Änderungen zu testen. Ссылка

Verwendung:

%Vor%

Vergessen Sie nicht extends ProviderTestCase3<YourProvider> .

    
biegleux 14.07.2012, 09:59
quelle
4

Ich verwende Robolectric , um so viel wie möglich zu testen, ohne den Emulator zu starten. Ich verifizierte das Aufrufen eines Updates für den contentResolver wie folgt:

%Vor%     
koljaTM 18.01.2013 21:30
quelle