Androidの単体テストでファイルを読み取りたい時があります。
たとえばretrofitのAPIをテストする場合、MockWebServerからのjsonレスポンスをソースコードでなくファイルとして保存しておきたいかもしれません。
テストの本質ではないので、テストのために冗長なファイル読み取りのコードを書きたくないですよね。
本エントリではAndroidの単体テストで簡単にファイルの内容を読み取る方法を紹介します。
ファイル保存場所
テストクラスが test/java/com/example/HogeTest.kt
の場合、読み取りたいファイルは test/resources/com/example/
に保存します。
パッケージ名と同じディレクトリ構成にすると簡単にアクセスできわかりやすいので便利です。
読み取りコード
テストケースからは次のようにしてファイルの内容を読み込むことができます。
class HogeTest {
@Test
fun hoge(){
val jsonString = IOUtils.toString(javaClass.getResourceAsStream("response.json"), StandardCharsets.UTF_8)
}
// runBlockingを使う場合
@Test
fun hoge2() = runBlocking {
val jsonString = IOUtils.toString(this@HogeTest.javaClass.getResourceAsStream("response.json"), StandardCharsets.UTF_8)
}
}
IOUtils
は以下の依存を追加することで使用できます。
testImplementation "commons-io:commons-io:2.6"