2013-02-08 3 views
7

Ho un Activity Sono unità di test. Voglio testare il Activity in isolamento, quindi il ActivityUnitTestCase si adatta molto bene ai miei scopi.Unità di test Android con ActivityUnitTestCase e PreferenceManager

Il metodo onCreate del mio Activity utilizza un valore archiviato nelle Preferenze. Mi piacerebbe impostare un valore per questo nel mio caso di test.

Il problema è che non riesco a capire come impostare il Preference in anticipo. Non esiste un metodo getContext() in ActivityUnitTestCase e getActivity(), che dovrebbe restituire un context, è nullo finché non chiamo startActivity(). Questa non è un'opzione, perché chiamando startActivity si attiverà il metodo onCreate, ed è qui che vive il codice delle preferenze.

Qualche idea su come posso ottenere un context che posso utilizzare per manipolare le preferenze per i miei test di unità?

risposta

9

È possibile ottenere il contesto tramite la strumentazione.

Per ottenere contesto della strumentazione (test runner):

getInstrumentation().getContext() 

Ma probabilmente bisogno del contesto dell'applicazione strumentato:

getInstrumentation().getTargetContext() 
+0

getTargetContext() ha lavorato. Grazie! – jacobhyphenated

+1

Salve, ma nel mio caso 'getInstrumentation()' sta restituendo ** null **. Sto estendendo 'ActivityUnitTestCase'. Qualche idea? –