/var/log/messages

debugging with sixth sense

てくぶ本のテスツ関連試してみるなど (2)

Robolectric も確認してみました。ちょいハマりました。

手順としては

  • とりあえずハロワなプロジェクトを作る
  • build.gradle 修正して sync
  • AndroidStudio の設定
  • テストフォルダの作成
  • テストコード作成
  • 実行

というカンジなのですが、てくぶ本の記載のママでさくっとテスト成功、とは行きませんでした。とりあえずログを以下に列挙します。

とりあえず

Android Studio を 1.3.1 にしています。Build Variants で Test Artifact が選択できる版になっていないと駄目な模様。

次に build.gradle の dependencies に以下を追加。

1
testCompile 'org.robolectric:robolectric:3.0'

testCompile という記述も Test Artifact が選択できる版になっていないと駄目なのかどうか。

sync したら Android Studio の設定を、との事で Build Variants を開いて Test Artifact を Unit Tests にしておく必要があるとのこと。

その後は

  • app/src/test/java/{package} なディレクトリを掘って
  • その中にテストコードを投入

すれば良いとのことだったのですが、その前にやっておく必要があるのが Run/Debug Configurations の設定でした。ぼくは

  • JUnit/ApplicationTest の Working Directory は空に
  • Defaults/JUnit の Working Directory を $MODULE_DIR$

という形にしましたが

  • JUnit/ApplicationText の Working Directory を $MODULE_DIR$

というのもアリなようです。

テストコード

とりあえず以下をでっちあげたのですが

getString できません (詳細は忘却の彼方)、という不具合が出まして、いくつか確認する中で諸々のリソースを試験の中で参照するための設定を RobolectricTestRunner を継承したクラスで行ない、そのクラスを TextRunner として使う形の記述が必要、というドキュメントがあり、そこに沿った記述を盛り込んだところ、試験にパスしております。

テストコードの方では以下な記述に修正しておく必要があります。

1
@RunWith(CustomRobolectricTestRunner.class)

Comments