じゃらん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);
と修正することで。エラーがなくなり、緑色の成功になります
ただ、日付を変更したりした場合、修正が必要になりそうです

Android と JUnit

Android の JUnit について調べています
参考サイトは
JUnitを使ってAndroidの自動テスト(1)
どうやら、普通にAndroid プロジェクトを作成し、
最後にいつもなら Finish をおすところを、next を押すことで
テストプロジェクトも一緒に作成されるようです
パッケージなどは作成されなかったため、
file > new > package で新規に作成し
作成したパッケージを右クリック
new > JUnit Test Code を選択し
Name にクラスファイル名を入力します
Screenshot-Ubuntu Android - VMware Player-2
書籍によれば、コードは自動生成されるそうですが
私の環境では自動生成されなかったため、そのまま手打ちで入力
入力完了後、右クリックして
Run As > Android JUnit test で起動する環境を選択すればOKです
実行後、JUnit の画面で結果が表示されます
JUnit-AVD.png
先に、JUnit のライブラリを追加していたので、もしかしたら、
この作業が必要になるかもしれないので、メモしておきます
やり方は、Package Explorer のプロジェクト名を右クリックし
build Path > Add Libraries…
を選択
Screenshot-Ubuntu Android - VMware Player-2
JUnit が選択肢にでるので、これを選んで next
JUnit には 3 と 4 があるけど、今回は3にしました
完了すると、package Explorer に JUnit が追加されます
JUnit.png

JUnit の情報収集


を参考に、じゃらんの空室情報アプリを作成しようとしたのですが
この項目を実践するには、JUnit ver3 を使う必要があります
このため、java JUnit で検索し
JUnit(JUnit3)の概要~利用方法【ユニットテスト – テスト】
などを参考にすすめていこうと思います
ちなみに、JUnit は eclipse に最初から入っているようです
確認するには
Eclipse を立ち上げて
Windows > Preferences
で設定画面をだして
Java > JUnit で確認できました
Screenshot-Preferences
また、クラスパス設定もすでに完了していたので
問題なく使えそうです
Screenshot-Preferences -1
準備は完了しているようなので、やり方がわかり次第
メモがわりに載せていこうと思います