I'm trying to create a test fixture using Fitnesse
framework, and I want to test a function which retrieves data from a server (RESTFUL service). My test case is very 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; }
And here is the Fitnesse
test page:!path fitnesse.jar
!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"|
Since it's just a demo, my test might look a bit silly at the moment. Unfortunately, I keep getting these errors:
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)
And I have no idea what is it telling me? I wrote other testing method like add(), substract()
, everything worked fine. I wonder does this error involve running a long task on the main thread? Any idea?