Ich habe eine Klasse, die den MediaStore nach Bildern abfragt. Zum Beispiel habe ich Code, der wie someContentResolver.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, ...)
aussieht. Ich möchte testen, dass unter anderem meine Anfragen an den MediaStore korrekt sind.ist es möglich, den MediaStore mit einem Test-Doppel zu ersetzen?
Was ich bisher in meinem Test gemacht habe, ist dies:
ContentResolver resolver = new Activity().getContentResolver();
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.DATA,
"/fake/path/file1.jpg");
values.put(MediaStore.Images.Media.DATE_ADDED,
fakeTime.getTime());
resolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
values);
ich diesen Resolver in meine Klasse zu injizieren, die auf eine Abfrage durchführt. Die Abfrage gibt jedoch null zurück. Ich sah diesen Beitrag: http://ikaruga2.wordpress.com/2013/07/29/roboelectric-and-contentresolverscontentproviders/, die die Content-Provider mit ShadowContentResolver registrieren sagt, so etwas wie:
ShadowContentResolver.registerProvider(MediaStore.AUTHORITY, <SOMETHING_GOES_HERE>);
aber ich weiß nicht, was für die Inhalte-Anbieter zu setzen. Vielleicht ein MediaStore
Objekt verwenden? Nein, es ist kein ContentProvider
. Vielleicht ist es MediaProvider
? Das Symbol kann aus irgendeinem Grund nicht aufgelöst werden.
An dieser Stelle habe ich ernsthafte Zweifel, dass dies sogar im entferntesten der richtige Ansatz ist. Kann mich jemand in die richtige Richtung lenken?
mit Robolectric 2.4 Snapshot und API 19.
Haben Sie schon eine Lösung gefunden? –
@SebastianRoth nein, habe ich nicht. – Kevin