Prueba de Android con Robolectric: no reconoce SDK de Facebook

Estamos intentando utilizar el marco de pruebas Robolectric en Android Studio para probar la API de Facebook. El botón de inicio de sesión de Facebook funciona para que la API de Facebook funcione. Sin embargo, la siguiente prueba falla:

package com.airportapp.test.Models; import android.app.Activity; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.annotation.Config; import org.robolectric.Robolectric; import com.airportapp.test.MyRobolectricTestRunner; import com.airportapp.LoginActivity; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; @RunWith(MyRobolectricTestRunner.class) public class LoginActivityTest { @Before public void setup() { //do whatever is necessary before every test } @Test public void testActivityFound() { Activity activity = Robolectric.buildActivity(LoginActivity.class).create().get(); Assert.assertNotNull(activity); } } 

Y el error es que Android Studio no pudo encontrar el archivo android.support cuando ejecutamos las pruebas. Puedes ver el error aquí: Introduzca aquí la descripción de la imagen

El otro error que aparece es: android.view.InflateException: archivo XML app / src / main / res / layout / activity_login.xml línea # -1 (lo siento, aún no implementado): Error al inflar la clase com.facebook.widget. LoginButton

Así que Android Studio no está contento con el botón de inicio de sesión de Facebook también 🙁 Pero funciona … Creemos que tenemos que importar algo, pero no sabemos dónde ponerlo.

InflateException es porque Robolectric no puede encontrar los recursos del SDK de Facebook. Para resolver esto, el archivo project.properties debe actualizarse para apuntar al proyecto SDK de Facebook. Haga esto agregando la línea siguiente a él:

 android.library.reference.1={Path} 

{Path} debe ser una ruta relativa, desde el archivo project.properties a la carpeta que contiene el AndroidManifest.xml del proyecto SDK de Facebook. En mi caso, es ../../build/intermediates/exploded-aar/com.facebook.android/facebook/3.21.0 .

Tenga en cuenta que esto funciona para todos los proyectos de la biblioteca de Android que contienen recursos que Robolectric no encuentra. Lectura adicional: aquí y aquí . Además, puede encontrar más documentación sobre project.properties aquí . Tenga en cuenta que en mi proyecto las pruebas Robolectric se encuentran en el propio proyecto de la aplicación para Android. Así que también podría intentar colocar el archivo project.properties en el mismo directorio que el AndroidManifest.xml utilizado para las pruebas.

En cuanto a su primer problema; No tengo experiencia personal con él. Pero parece ser porque Gradle no puede encontrar las bibliotecas de soporte cuando compila las pruebas de unidad. La respuesta de esta pregunta debe arreglarlo.

  • Cómo comprobar los usuarios que ya han iniciado sesión en android (Facebook SDK 4.0)
  • Android facebook: No mostrar mi mensaje en el diálogo
  • ¿Cómo usar Stetho con Volley?
  • Android Facebook.authorize no invocan el método oncomplete
  • Implementar la aplicación de Android. Falta la tarea 'installReleaseDebug' para gradle
  • La aplicación está mal configurada para la integración de Facebook
  • ¿Cómo agregar a mi aplicación Android un botón de hacer como a una página de facebook?
  • Android: publicar en Facebook mediante programación con FB SDK 4.x
  • Android Facebook SDK autorizar métodos muestra el diálogo cada vez
  • Errores de Facebook relacionados con auth.extendSSOAccessToken
  • Facebook - solicitudes sin fricción en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.