スキップしてメイン コンテンツに移動

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

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

⇒良くないやり方でした。文末の 追記: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プロジェクトのテストケースのように光の速さでロジックテストの起動が行えます。


コメント

このブログの人気の投稿

Javaでprivateなfieldやmethodにアクセスする

JUnitでテストしてると、privateなフィールドにアクセスして、値を参照したりセットしたりしたくなるわけですが、よく使うのでメモしておきます。 例えば、次のような対象のクラスがあるとします。 public class ParentClass { private String hoge = "ParentClass!!"; public void dispMsg() { System.out.println("dispMsg:" + hoge); } private void privateDispMsg(String msg) { System.out.println("dispMsg:" + msg); } }

GolangでWindows GUIアプリケーション

GUIアプリ作成の前提 社内ツールとしてexeで配布 開発環境はGoLandを使う 社内ツールとしてexeを配布ということであれば、Visual StudioでC#による開発だと思います。しかしながら、Go言語を習得したいのと、GoLandの補完機能が便利で、Android Studio使っていたこともあり、とっつきやすいという点からGo縛りでGUIアプリケーションを考えたいと思います。 lxn/walk Windows application library kit for Go. Windows向けしか考えていないので、まずこのライブラリなのですが、ボタンやコンボボックスが思ったように並ばなかったり、手軽にイメージボタンを配置したりなど、簡単にレイアウトを変更できない課題に直面しました。レイアウト作成だけで時間を取られてしまいます。そう言えば、Androidアプリ開発のときは、XMLでデザイン部分を切り離してたのを思い出して、今回の調査の運びとなりました。 fyne-io/fyne Cross platform native GUIs designed for Go based on Material Design. Supports: Linux, macOS, Windows, BSD, iOS and Android. walkと比べると、クロスプラットフォームで作成できるのですが、こちらもコードの中にデザインを書いていく形でした。 therecipe/qt therecipe/qt allows you to write Qt applications entirely in Go or JavaScript. Qt Creatorなるものがあるようで、デザイン部分を切り離せる印象はあるものの、最新のPCでもビルドに時間がかかるようで、学習コストもかかるという記事を見かけて断念しました。 どうしたものかとツイートしましたら、下記のようにご助言をいただいた。 同じ課題に対し色々試した結果、PWAのフルキャッシュドに落ち着いた。中身はGo+WASMで。 https://t.co/e60whDTV16 — のぼのぼ📡 (@nobonobo) July 21, 2020 PWA 早速調べてみました。Googleが進めているプロジェクトで、ネイティブアプリのよ

Eclipseの高速化メモ

Eclipseが重いと一言に言っても、いろいろな工程での話があると思いますが、過去記事のなども含めてこの記事にピックアップしておきたいと思います。以下はWindows環境での話です。