GetSupportActionBar () devuelve null con Robolectric

El método getSupportActionBar () devuelve null cuando lo invoco a través de un caso de prueba basado en Roboelectric y JUnit.

Este es mi caso de prueba simple:

package com.mobile.test; import static org.hamcrest.CoreMatchers.equalTo; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.Robolectric; import org.robolectric.RobolectricTestRunner; import android.app.Activity; import android.content.Intent; import com.mobile.android.core.R; import com.mobile.android.core.activity.MainActivity; import com.mobile.android.core.activity.TestActivity; @RunWith(RobolectricTestRunner.class) public class NavigationDrawerTest { private Activity activity; @Test public void testNavigationDrawer() { activity = Robolectric.buildActivity(MainActivity.class).create().get(); String hello = activity.getResources().getString(R.string.drawer_open); System.out.println(hello); assertEquals(hello, "Menu"); } } 

Y esta es mi clase de actividad:

 public class MainActivity extends ActionBarActivity { // Drawer related private DrawerLayout mDrawerLayout; private ListView mDrawerList; private ActionBarDrawerToggle mDrawerToggle; String[] mDrawerOptions; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // enable ActionBar app icon to behave as action to toggle nav-drawer if (getSupportActionBar() != null) { getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); } } } 

Cualquier ideas brillantes en hwo para arreglar esto? ¿Tengo que escribir alguna actividad de sombra o alguien sabe cómo trabajar con estos problemas de barra de acción con RObolectric ??

Gracias por cualquier ayuda

Soporte de ActionBar
Pude recuperar una instancia de la ActionBar de soporte añadiendo una anotación @Config a mi prueba con el número de compilación sdk de Gingerbread:

 @Test @Config(reportSdk = 10) public void actionbarTest(){ .... Your Test here } 

Una simple configuración del proyecto se puede ver aquí: simple-robolectric

ActionBarSherlock
Debe agregar archivos ActionBarSherlock modificados a su paquete de prueba y llame a los métodos siguientes en su método @Before:

 ActionBarSherlock.registerImplementation(ActionBarSherlockRobolectric.class); ActionBarSherlock.unregisterImplementation(ActionBarSherlockNative.class); ActionBarSherlock.unregisterImplementation(ActionBarSherlockCompat.class); 

El conjunto completo de instrucciones se puede encontrar aquí: ActionBar y Robolectric trabajando juntos

Actualizar
Con Robolectric 2.2 sólo tiene que agregar la anotación de configuración "@Config (reportSdk = 10)" a sus métodos de prueba o clase y debería funcionar también.

  • shadowOf () undefined en Robolectric-3.0-rc3.jar
  • Archivo de clase para android.support.v4.widget.DrawerLayoutImpl no se encuentra en travis support-v4 21.0
  • ¿Cómo puedo detectar con Robolectric que onBackPressed se llama programáticamente?
  • Cómo utilizar Robolectric 2.4 en Android Studio 1.1.0 y gradle 2.2.1
  • Robolectric 3.0 no funciona con AppCompat 21+
  • Prueba de unidad de Android con Retrofit / RxJava / Roboletric y Mockito
  • Configuración de Deckard para Gradle. Error con la prueba Robolectric
  • Robolectric 3.0, no pudo probar una función que inicia un HandlerThread
  • Robolectric + PowerMock + Mockito no funciona
  • Pruebas unitarias Robolectric fallan después de Multidex
  • Robolectric 3.0 - Recurso no resuelto cuando se utiliza applicationIdSuffix
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.