AndroidHttpClient no encontrado (al ejecutar Robolectric)

He creado un proyecto muy simple para probar la integración de Robolectric + Data Binding + Retrolambda. Cuando ejecuto el traje de prueba, recibo el siguiente mensaje:

Error:(30, 30) Gradle: error: cannot access AndroidHttpClient class file for android.net.http.AndroidHttpClient not found 

Esto es bastante extraño ya que no uso AndroidHttpClient en ninguna parte.


El error se produce aquí, en la línea de "actividad":

 @Before public void setup() { activity = Robolectric.setupActivity(MainActivity.class); // Error on this line textView = (TextView) shadowOf(activity).findViewById(R.id.textView); button = (Button) activity.findViewById(R.id.button); editText = (EditText) activity.findViewById(R.id.editText); } 

El programa nunca usa AndroidHttpClient. De hecho, este es el programa completo:

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main); binding.setUser(new User()); binding.button.setOnClickListener((v) -> { binding.textView.setText(String.format("Hello, %s!", binding.editText.getText())); binding.editText.setText(""); }); } 

Ideas sobre lo que está mal?

AndroidHttpClient fue eliminado del SDK en v23 de las herramientas de compilación.

Como Robolectric está funcionando contra versiones anteriores, espera que esté allí, que es porqué usted está viendo este error.

Por ahora, puedes agregarlo de nuevo en:

 android { useLibrary 'org.apache.http.legacy' } 

Como se detalla a continuación .

Hay un boleto GitHub abierto para Robolectric para arreglar esto. Usted puede seguir el hilo / boleto aquí .

Acabo de añadir la clase falsa android.net.http.AndroidHttpClient en mis fuentes de prueba. Y resolvió el problema por ahora. Esperando que Robolectric sea actualizado

Problema aparente y solución:

AndroidHttpClient se eliminó del SDK en el nivel 23 de API, mientras que Robolectric se configuró para ejecutar pruebas con SDK 21:

 AndroidHttpClient was removed from the SDK in API Level 23 

Pude resolver este problema creando una nueva clase llamada AndroidHttpClient dentro de un nuevo paquete android.net.http . Después de eso tuve que anotar mi clase de prueba de unidad con @Config(constants = BuildConfig.class, sdks = 21) que ejecutará las pruebas contra una versión emulada de la API 21 que es la última versión de Android Robolectric soporta actualmente.

Hay actualmente un problema abierto aquí , así que una vez que lanzan la versión 3.1 todo debe estar bien y no tendrá que usar esta solución.

  • Robolectric no utiliza ShadowWebView como la superclase de una clase que extiende WebView. MustOverrideException en su lugar
  • Prueba de vistas personalizadas con Robolectric: Ancho y altura siempre son 0
  • ¿Cómo acceder a los recursos por ID en la prueba de unidad de Android?
  • Osx maven running tests Excepción: java.lang.OutOfMemoryError lanzado desde el UncaughtExceptionHandler en el subproceso "main"
  • Android instrumentación prueba java.lang.UnsatisfiedLinkError en el uso de AndroidJunitRunner y AndroidJUnit4
  • Servicios Roboeléctricos y de Intención
  • Robolectric 2.4 NoSuchMethodError no se puede transmitir a RuntimeException al crear actividad
  • Ejecutar la prueba de Android con Robolectric - error de dependencia
  • Error Robolectric y Google Analytics en las pruebas
  • Parse + Robolectric causando java.lang.VerifyError: Tipo incorrecto en pila de operandos
  • Robolectric InflateException al utilizar la biblioteca de soporte v7 AlertDialog
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.