Sto usando InstrumentationTestCase
per testare un componente della mia applicazione.InstrumentationTestCase Android getFilesDir() restituisce null
Il componente persiste i dati nella memoria interna e utilizza Context::fileList();
per recuperare i file persistenti.
Ho riscontrato il seguente problema: L'utilizzo di questo metodo nell'app (sul dispositivo) funziona perfettamente. Ma quando provo a (Android-) Unit-Test (anche sul dispositivo) con l'uso di InstrumentationTestCase
ottengo uno NullPointerException
all'interno del metodo fileList()
. Ho scavato nella fonte Android e ho scoperto che getFilesDir()
(see source here) restituisce null e causa questo errore.
Il codice per riprodurre è il seguente:
public class MyTestCase extends InstrumentationTestCase
{
public void testExample() throws Exception
{
assertNotNull(getInstrumentation().getContext().getFilesDir()); // Fails
}
}
Le mie domande sono: E 'questo comportamento destinato? Cosa posso fare per aggirare questo problema? Sto usando InstrumentationTestCase
giusto o dovrei usare qualcosa di diverso?
Ho trovato this question ma non sono sicuro se questo copre lo stesso problema che ho.
Hai provato a utilizzare getTargetContext() invece di getContext() – Blackbelt
Beh, sì. 'getTargetContext()' funziona come previsto, ma voglio che i test siano eseguiti (più o meno) indipendentemente dall'app. Questa è la ragione per cui ho scelto 'InstrumentationTestCase'. – GeneSys
Come dice il nome, InstrumentationTestCase è un test di strumentazione, utilizzando la seconda app di test per lo strumento dell'app principale per testare il componente Android, ad esempio l'attività è correttamente resa o l'interazione dell'utente viene gestita correttamente. Non ha molto senso eseguire l'app di test indipendentemente dall'app principale. – yorkw