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
- ¿Es el manejo de llamadas http de servicios de múltiples intenciones buen enfoque?
- Agregar encabezados a solicitud envueltos por ClientResource en Restlet
- JSON VS simple manipulación de cadenas para analizar HttpRequest en Android
- Autenticación de usuario mediante REST
- Android ContentProvider y Google IO Rest Talk
!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?
- ¿Cómo puedo enviar JSon como BODY en una solicitud POST al servidor desde una aplicación de Android?
- ¿Aplicación de Android para la tienda Magento utilizando REST o SOAP?
- Biblioteca Java para consumir / manipular Sharepoint 2013 Resto OData Resultado XML
- Obtener datos del servidor con jquery ajax en android phonegap
- Recvfrom falló: ECONNRESET (Conexión restablecida por pares)
- Configuración del tipo de contenido Json para el cliente Rest
- Cross Platform Aplicación: Android + Custom REST Backend (Yii2) + Proveedor SSO de terceros para iniciar sesión (Google+)
- Análisis de la cadena JSON de la URL (RESTful webservice) mediante las bibliotecas GSON. Androide
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
- Ciclo de vida de la actividad de Android y dispositivo de bloqueo / desbloqueo
- Cómo instalar Appium en Ubuntu para Android