FC2ブログ

じゃらん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

準備は完了しているようなので、やり方がわかり次第
メモがわりに載せていこうと思います

テーマ : プログラミング
ジャンル : コンピュータ

最新記事
検索フォーム
GREEハコニワ攻略サイト
リンク
カテゴリ
月別アーカイブ
フリーエリア
最新記事
FXプライムレート
最新コメント
最新トラックバック