2012-10-31 3 views
1

Je développe une application Android avec plusieurs classes d'activité. J'utilise Robolectric pour les tests unitaires. Dans la configuration de test que j'appelle onCreate (null) dans l'activité testée:Obtenir NullPointerException en utilisant Robolectric pour tester l'activité Android

@Before 
public void setUp() throws Exception { 
    activity = new StartARound(); 
    activity.onCreate(null); 
    btnSelectCourse = (Button) activity.findViewById(com.catalyst.golfapp.R.id.btnSelectCourse); 
    btnAddACourse = (Button) activity.findViewById(com.catalyst.golfapp.R.id.btnAddACourse); 
    btnShowLocation = (Button) activity.findViewById(com.catalyst.golfapp.R.id.btnShowLocation); 
    textView1 = (TextView) activity.findViewById(com.catalyst.golfapp.R.id.textView1); 
} 

Le problème est, la méthode onCreate pour l'activité que je teste les appels:

getActionBar().setDisplayHomeAsUpEnabled(true); 

exécution de cette ligne de code produit une erreur java.lang.NullPointerException et les tests ne s'exécutent pas. Des idées ou du code supplémentaire que vous aimeriez examiner?

Répondre

0

getActionBar() n'est pas implémenté dans la dernière version de Robolectric.

C'est le fichier source pour le ShadowActivity: https://github.com/pivotal/robolectric/blob/master/src/main/java/com/xtremelabs/robolectric/shadows/ShadowActivity.java

Cette API peut être utilisée pour voir lorsque vous utilisez une fonction qui n'existe pas dans robolectric: http://pivotal.github.com/robolectric/javadoc/com/xtremelabs/robolectric/Robolectric.html#logMissingInvokedShadowMethods()

0

BTW, en utilisant getActionBar() n'est pas recommandé. Au lieu d'utiliser Android-AppCompat-v7 qui comprend la nouvelle barre d'action. Vous pouvez l'obtenir en utilisant getSupportActionBar()

Questions connexes