0

Je commence tout juste à apprendre les tests sur Android et cela me rend fou. La fonctionnalité fonctionne bien, mais je ne peux pas exécuter mes tests. J'essaie de lire une valeur de SharedPreferences et de le comparer au contenu d'un TextView. J'utilise Espresso sur Android Studio 2.3.3. Cette ligne String player1Name = sharedPreferences.getString(context.getString(R.string.KEYplayerOneDefaultNameSetting), context.getString(R.string.playerOne)); provoque cette exception android.content.res.Resources$NotFoundException: String resource ID #0x7f09004d. C'est essentiellement le même code que j'utilise dans mes Fragments pour accéder aux préférences partagées.

Je n'ai rien trouvé en référence à ce même problème. J'ai l'impression d'avoir une simple erreur de configuration mais je n'arrive pas à comprendre. Merci d'avance.

Voici mon test complet:

@Test 
public void setsPlayerNamesFromSettings(){ 
    Context context = getInstrumentation().getContext(); 
    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context); 
    String player1Name = sharedPreferences.getString(context.getString(R.string.KEYplayerOneDefaultNameSetting), context.getString(R.string.playerOne)); 
    onView(withId(R.id.LpCalculatorTextPlayer1Name)).check(matches(withText(player1Name))); 
    String player2Name = sharedPreferences.getString(context.getString(R.string.KEYplayerTwoDefaultNameSetting), context.getString(R.string.playerTwo)); 
    onView(withId(R.id.LpCalculatorTextPlayer2Name)).check(matches(withText(player2Name))); 
} 

Si c'est une aide, voici le code de mon Fragment que l'accès SharedPreferences

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getContext()); 
     mLpCalculatorModel.setLpDefault(Integer.parseInt(preferences.getString(getString(R.string.KEYdefaultLpSetting), "8000"))); 
     mLpCalculatorModel.setPlayer1Name(preferences.getString(getString(R.string.KEYplayerOneDefaultNameSetting), getString(R.string.playerOne))); 
     mLpCalculatorModel.setPlayer2Name(preferences.getString(getString(R.string.KEYplayerTwoDefaultNameSetting), getString(R.string.playerTwo))); 
     mLpCalculatorModel.setAllowsNegativeLp(preferences.getBoolean(getString(R.string.KEYallowNegativeLp), false)); 
     tvPlayer1Lp.setText(Integer.toString(mLpCalculatorModel.getLpDefault())); 
     tvPlayer2Lp.setText(Integer.toString(mLpCalculatorModel.getLpDefault())); 

Répondre

1
getInstrumentation().getContext() 

Ceci retourne une Context représentant votre ensemble androidTest source. Si vos ressources sont ailleurs (p. Ex., main), utilisez:

getInstrumentation().getTargetContext() 
+0

Merci, c'est corrigé! Une erreur aussi simple. – wsmithsrs