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:
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?
ProviderTestCase2
verwendet MockContentResolver
. Überprüfung des Quellcodes, es ist notifyChange
Methode tut nichts.
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>
.
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%Tags und Links android android-contentresolver android-testing