Android開発でUnitTestを実行する方法がわからずいろいろと嵌りました。いろいろと調べたところ、基本的にはAndroid JUnit Testを使用してテストを行えばよいことがわかりました。
その中でも、Activityについてのテストはテストクラスで” ActivityInstrumentationTestCase2<T>”を継承し、ユーティリティクラスなどは”AndroidTestCase”を継承します。
[sourcecode language="java"] public class CalculatorModelTest extends AndroidTestCase{
private CalculatorModel model;
public void setUp() throws Exception {
super.setUp();
model = new CalculatorModel();
}
public void tearDown() throws Exception {
super.tearDown();
}
public void testOperation() {
…
}
} [/sourcecode]
当初はJUnitを使用すると思っていたのでアノテーション(@beforeなど)を付けていたため、Android JUnit Test へ変更してからも下記のエラーがコンソール画面に発生しテストが実行できませんでした。
Test run failed: java.lang.ClassNotFoundException
このエラーについて詳細は??と思っていたのですが、LogCatのログコンソールにエラー内容が出力されていました。(ここに気づくまで時間がかかってしまいました…)
04-17 13:16:11.592: ERROR/dalvikvm(8498): Unable to resolve Lnet/sample/hoge; annotation class 43 04-17 13:16:11.612: ERROR/AndroidRuntime(8498): FATAL EXCEPTION: main 04-17 13:16:11.612: ERROR/AndroidRuntime(8498): java.lang.NoClassDefFoundError: org.junit.Test …
org.junit.Testで例外が発生しているし、"annotation class 43"からもアノテーションが関連していることが明白です。ソースを見てみると、確かにアノテーションが付いている…ということで原因がわかってめでたしとなりました。こういうトラブルに丁寧に対応していくことで知識と理解が深まるのだと思います。なかなか先に進まないので自分にがっかりしますが、根気よく続けていこうと思います。