じゃらんAndroid JUnit テストのメモ


を参考に、サンプルアプリを作っていましたが、XMLの解析でつまづきました
ようやく、解決したのでメモしておきます
今回、つまづいたのは102ページのところの
ResultsFactoryTest.java のテストコードの実装のところ
ちなみに、JUnit Test Code のクラスを作成するには
File > new > Package
でパッケージ を作成
ResultsFactoryTest を作成するには
File > new > JUnit TestCode で作成することができます
基本的にはそのままでよいのですが、
int iRet =svr.requestText(“http://jws.jalan.net/APIAdvance/StockSearch/V1/?key=取得したAPIキー&s_area=330202&stay_date=20110129”);
となっているのをそのままにして Android JUnit Test を
行うと、エラーになりました
エラーの内容は
junit.framework.AssertionFailedError: expected:<0> but was:<1230>
at com.sample.data.ResultsFactoryTest.testGetResponse(ResultsFactoryTest.java:26)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:529)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447)
原因を探してみた結果
&stay_date=20110129
の部分は、じゃらんWebサービス 空室検索API
にあるように、
宿泊開始日になります
このままだと、テストするにはすでに日付が過ぎているので、ここを変更します
&stay_date=20110129

&stay_date=20110929
というように、先の日付に変更します
これで一度保存し、
右クリック > Run As > Android JUnit Test を実行すると
再びエラーになります
junit.framework.AssertionFailedError: expected:<537> but was:<1230>
at net.linuxliker.data.ResultsFactoryTest.testGetResponse(ResultsFactoryTest.java:26)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:520)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447)
ただし、今回は 少し変化があります
junit.framework.AssertionFailedError: expected:<0> but was:<1230>
だったところが
junit.framework.AssertionFailedError: expected:<537> but was:<1230>
となっています
これは、105ページに注意書きが書いてあったのですが
引数で指定するリクエストURLに対し
レスポンスが常に同じになるとは限らないというためのようです
今回の数値が expected 537 に対し 1230 となっているのが原因でエラーとなったので
assertEquals(results.getNumberOfResults(), 1230);

assertEquals(results.getNumberOfResults(), 537);
と修正することで。エラーがなくなり、緑色の成功になります
ただ、日付を変更したりした場合、修正が必要になりそうです

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です