Android Test Unitaire : comment effacer SharedPreferences
Je suis en train d'effacer tous les SharedPreferences ajouté lors de mes tests. J'ai déjà lu quelques posts et la documentation officielle (SharedPreferences.De l'éditeur.clear()). Mais quand je lance mon application après les tests unitaires ont été exécutés, j'ai toujours trouvé des valeurs de test.
Donc, dans le AndroidTestCase.tearDown(), je fais ceci :
public class PrivateStorageUtilsTest extends AndroidTestCase {
private static final String KEY_SP_PACKAGE = "PrivateStorageUtilsTest";
protected void setUp() throws Exception {
super.setUp();
//Clear everything in the SharedPreferences
SharedPreferences sharedPreferences = getContext()
.getSharedPreferences(KEY_SP_PACKAGE, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.clear();
editor.commit();
}
protected void tearDown() throws Exception {
//Clear everything in the SharedPreferences
SharedPreferences sharedPreferences = getContext().
getSharedPreferences(KEY_SP_PACKAGE, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.clear();
editor.commit();
}
}
Toutes les autres questions que j'ai trouvé sur DONC, a propos de l'ajout d' commit()
après la clear()
, je l'ai déjà fait ici.
EDIT 1 Ajoutant setUp()
méthode
EDIT 2 en Offrant une classe
êtes-vous en utilisant le même contexte pour wrinte et d'effacer les SharedPreferences?
le Contexte est celui fourni par le AndroidTestCase classe. Aussi, lorsque je lance mon application, je l'appelle encore
probablement oui, c'est mieux. Savez-vous que lorsque vous exécutez des tests de différents apk est mise à jour sur le périphérique de test?
la méthode setUp() est ajouté. Et non, je n'étais pas au courant de ce fait. Donc, il est vraiment étrange d'avoir encore à des valeurs de test si c'est pas le même, APK n'est-ce pas ?
Quelle classe êtes-vous étendre?
le Contexte est celui fourni par le AndroidTestCase classe. Aussi, lorsque je lance mon application, je l'appelle encore
getContext()
. Je peux vous fournir le setUp()
méthode de mes tests unitaires si vous le souhaitez.probablement oui, c'est mieux. Savez-vous que lorsque vous exécutez des tests de différents apk est mise à jour sur le périphérique de test?
la méthode setUp() est ajouté. Et non, je n'étais pas au courant de ce fait. Donc, il est vraiment étrange d'avoir encore à des valeurs de test si c'est pas le même, APK n'est-ce pas ?
Quelle classe êtes-vous étendre?
OriginalL'auteur mithrop | 2013-07-22
Vous devez vous connecter pour publier un commentaire.
Vous devez étendre
ActivityInstrumentationTestCase2
et l'utilisationgetInstrumentation().getTargetContext()
pour obtenir le contexte de l'application cible en préparation (en cours de test)OriginalL'auteur
Si vous utilisez
ActivityTestRule
de Espresso, essayez ceci:Avec une version légèrement modifiée de stevo.mit
clearSharedPrefs
:ce doit être la accepté de répondre comme ActivityInstrumentationTestCase2 est déjà obsolète
OriginalL'auteur
Vous de la classe de test devrait s'étendre
InstrumentationTestCase
.Et vous devez l'utiliser
getInstrumentation().getTargetContext()
.Si vous avez besoin de manipuler activité directement, alors votre classe de test devrait s'étendre
ActivityInstrumentationTestCase2
.Si votre cas de test devrait ressembler à ceci:
OriginalL'auteur
Je lance votre méthode avec AndroidJUnit4 et il fonctionne parfaitement lorsqu'il est appelé comme @Before et @Après.
OriginalL'auteur