Android、Java、Web系、Linux、マラソン等の備忘録

2012/07/17

Android Test ProjectでJUnit Testが起動しない

0 件のコメント
いいのか悪いか、まだよくわかりませんが、うまくいったやり方をメモしておきます。

⇒良くないやり方でした。文末の 追記:2013/09/27 を参照してください。

環境

  • Windows7
  • JDK1.7
  • Eclipse 3.7 Indigo Service Release 2
  • Android 2.1

手順

  1. Android Test Projectとして新規プロジェクトの作成
  2. 別途作成していたAndroid Application Projectのプロジェクトをテスト対象として選択
  3. TestCaseを継承してクラスを作成
  4. このクラスにテスト対象のクラスのインスタンスを生成するだけのコードを記述
  5. パッケージエクスプローラより、右クリック→Run As→Junit Testを選択
    WS000864
  6. ダイアログが表示されるので、「Eclipse JUnit Lancher」を選択してOK
追記:ここが間違い↑ 「Android JUnit Test Launcher」を選択すれば以下は出ない

Eclipseのコンソールに表示されるエラー

Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/ref/FinalReference

対応

以下の手順JUnitで起動できました。
Android Test Projectを右クリックして、ビルドパスの設定を選択します。ライブラリタブで、「Add Library」をクリックし、JUnitを選択して「Finish」ボタンを押してライブラリを追加します。
WS000865
手順3で作成したクラスを右クリック→Run As→Run Configurationsを選択し、「Classpath」タブを選択します。そこに表示されているAndroid 2.1を選択して、「Remove」ボタンを押下します。
WS000866
そのまま「Run」ボタンを押下すると、JUnitが起動して結果を表示してくれます。
WS000867
なお、これ以降、 TestCaseを継承する際、android.jar版とjunit.jar版が表示されるので適切な方を選択すれば良いでしょう。
image

最後に

ActivityのテストをするべくAndroid Test Projectを作成したわけですが、その内部ロジックだけを単体テストをしたいのに、エミュレータ付だと遅いので、Eclipseに最初からあるJUnitテストをやりたかったのですが、起動できず若干の試行錯誤しました。ロジック部分の内容にもよりますが、やっぱりエミュレータなしだと一瞬でテストが終わるのでありがたいです。

追記:2013/02/20

重いエミュレータを利用する時は有効かもしれませんが、実機、Virtual Boxなどを利用してテストしている場合は、新しくテストケースを作るたびに上記の手順をやる必要があるので、面倒です。しかも、Log.vとか使えないので。
上記では、右クリック > Run as > 2 Juite Test


をする場合のやり方ですが、AndroidのJUnitテストを行う場合は、TestCaseを継承していようと,
Android固有のクラスを使う予定がなくても、②JUnit Testではなく、一貫して①Android JUnit Testを行うようにした方が良いと思います。起動に時間がかかるとは言え、TestCaseの継承であれば、②JUnit Testの場合とそんなに実感できるほどの差がないように思います。それより、先ほど述べた面倒な部分がかなりデメリットとなります。こんな記事を書いてしまいましたが、どうしても、起動が遅くてサクサクテストできない場合は、テスト環境を実機なりVirtual BoxなりPCのメモリやCPUといった方を見直すことを先に考えた方が良いと思われます。

追記:2013/09/27

2013/02/20の追記に関して
>新しくテストケースを作るたびに上記の手順をやる必要があるので、面倒です

確かに面倒

>一貫して①Android JUnit Testを行うようにした方が良いと思います。起動に時間がかかるとは言え、TestCaseの継承であれば、②JUnit Testの場合とそんなに実感できるほどの差がないように思います

僕は何を言ってるんだ、遅ぇーよ!!
エミュレータと比べて感覚が麻痺してたのかな....

上記のやり方は間違ってましたm(_ _)m

テストケースのJavaファイル上で、右クリック > Run as > 2 Juite Testを選択
表示されたダイアログで、「Android JUnit Test Launcher」を選択してOKボタンを押下



これで、上記の面倒な手順を踏まなくても、Javaプロジェクトのテストケースのように光の速さでロジックテストの起動が行えます。


0 件のコメント :

コメントを投稿