Error java.lang.RuntimeException: Stub! En Android con pruebas de Fitnesse

Estoy tratando de crear un dispositivo de prueba utilizando el marco de Fitnesse , y quiero probar una función que recupera los datos de un servidor (servicio RESTFUL). Mi caso de prueba es muy simple:

 public class FriendListActivityFixture extends ColumnFixture { public int URL; public String test() { JSONArray array = JsonHelper.getJsonArrayFromUrl("http://107.22.209.62/android/get_users.php"); return array.toString(); } } public static JSONArray getJsonArrayFromUrl(String url) { InputStream input = null; String result = ""; JSONArray jsonArray = null; try { HttpClient httpclient = CustomHttpClient.getHttpClient(); HttpPost httppost = new HttpPost(url); HttpResponse response = httpclient.execute(httppost); HttpEntity entity = response.getEntity(); input = entity.getContent(); } catch (Exception e) { Log.e(TAG + ".getJsonArrayFromUrl(String url)", "Error in http connection " + e.toString()); } try { BufferedReader reader = new BufferedReader(new InputStreamReader(input, "iso-8859-1"), 8); StringBuilder content = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { content.append(line + "\n"); } input.close(); result = content.toString(); } catch (Exception e) { Log.e(TAG + ".getJsonArrayFromUrl(String url)", "Error parsing result " + e.toString()); } try { jsonArray = new JSONArray(result); } catch (JSONException e) { Log.e(TAG + "getJsonArrayFromUrl(String url)", "Error converting data " + e.toString()); } return jsonArray; } 

Y aquí está la página de prueba de Fitnesse

 !path C:\Program Files (x86)\Android\android-sdk\platforms\android-10\android.jar !path C:\Users\chan\git\Spotr\Spotr\bin\classes !|com.csun.spotr.fitnesse.FriendListActivityFixture| |URL|test?| |0|"wwa"| 

Ya que es sólo una demo, mi prueba podría parecer un poco tonta en este momento. Lamentablemente, sigo recibiendo estos errores:

 java.lang.RuntimeException: Stub! at android.util.Log.e(Log.java:15) at com.csun.spotr.util.JsonHelper.getJsonArrayFromUrl(JsonHelper.java:75) at com.csun.spotr.fitnesse.FriendListActivityFixture.test(FriendListActivityFixture.java:30) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at fit.TypeAdapter.invoke(TypeAdapter.java:109) at fit.TypeAdapter.get(TypeAdapter.java:97) at fit.Fixture$CellComparator.compareCellToResult(Fixture.java:371) at fit.Fixture$CellComparator.access$100(Fixture.java:357) at fit.Fixture.compareCellToResult(Fixture.java:299) at fit.Fixture.check(Fixture.java:295) at fit.ColumnFixture.check(ColumnFixture.java:51) at fit.Binding$QueryBinding.doCell(Binding.java:215) at fit.ColumnFixture.doCell(ColumnFixture.java:37) at fit.Fixture.doCells(Fixture.java:171) at fit.Fixture.doRow(Fixture.java:165) at fit.ColumnFixture.doRow(ColumnFixture.java:25) at fit.Fixture.doRows(Fixture.java:159) at fit.ColumnFixture.doRows(ColumnFixture.java:18) at fit.Fixture.doTable(Fixture.java:153) at fit.Fixture.interpretTables(Fixture.java:99) at fit.Fixture.doTables(Fixture.java:79) at fit.FitServer.process(FitServer.java:81) at fit.FitServer.run(FitServer.java:56) at fit.FitServer.main(FitServer.java:41) 

Y no tengo ni idea de lo que me está diciendo? Escribí otro método de prueba como add(), substract() , todo funcionó bien. Me pregunto si este error implica ejecutar una larga tarea en el hilo principal? ¿Alguna idea?

android.jar contiene sólo la implementación de stub de las clases. Proporciona los medios para que la aplicación para construir, una vez que tenga su APK debe ejecutarlo en un dispositivo o emulador de Android.

Si no me equivoco, intenta ejecutar la JVM del host.

Puedes solucionar este problema y probarlo fácilmente en tu IDE usando Roboeléctrico .

Como dijo dtmilano, no se puede ejecutar el código de Android en su computadora portátil como es, pero Roboeléctrico básicamente sustituye las implementaciones de métodos reales de los stubs en Android.jar.

Dos cosas a tener en cuenta si usted va con esta solución:

  • Asegúrese de que su importación de JAR esté por encima del JAR de Android en su lista de dependencias si utiliza IntelliJ

  • Por defecto, bloquea las solicitudes HTTP bajo la suposición de que en realidad no quieres cambiar el estado de un servidor en alguna parte. Sin embargo, puede desactivar esto fácilmente: Roboelectric.getFakeHttpLayer () .interceptHttpRequests (false);

Como se mencionó anteriormente, Android jar s no son buenos para nada más allá de la compilación. Incluso la mayoría de las cosas inocentes están completamente apagadas. Pero todavía puede usarlos en pruebas de unidad VM de host con buenos marcos burlones. Mi elección es jmockit :

No estoy seguro de si funcionará con Fitnesse sin embargo

  • ¿Qué es una manera fácil de stub / dummy un servicio web relajante?
  • ¿Qué hacer cuando Http Post se completó con éxito y mientras espera la respuesta de conectividad a Internet perdido?
  • Android URLConnection.setRequestProperty () en android estudio no parece hacer nada
  • ¿Cómo realizar una solicitud de API en Kotlin?
  • Rest Server o API para probar mi cliente Restful?
  • ¿Cómo se comunica un Android y un App Engine?
  • Integración de los servicios REST con una base de datos de inventario y SQL utilizando Android
  • Uso del correo y la contraseña para autenticarse mediante la API REST
  • Mejor Recurso de Aprendizaje para OAuth
  • ¿Cuándo necesita un servidor de aplicaciones para la mensajería de Cloud Firebase?
  • REST - Cómo restringir el acceso para el software de cliente no autorizado
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.