ユニットテストを充実させていくと小さい関数のテストが必要になってきます。例えば下記のような拡張関数がある場合

fun Int.toBoolean(): Boolean = this == 1

Int型の変数が1の場合のみtrueでそれ以外はfalse。ParameterizedテストはJunitの機能で記述できます。

import com.google.common.truth.Truth.assertThat
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.runners.Parameterized

@RunWith(Parameterized::class)
class IntTest(
    private val cate: String,
    private val input: Int,
    private val expected: Boolean
) {
    @Test
    fun intToBoolean() {
        val actual = input.toBoolean()
        assertThat(actual).isEqualTo(expected) // junitのみで書きたい場合はassertEquals()でも良い
    }

    companion object {
        @Parameterized.Parameters(name = "{0}")
        @JvmStatic
        fun data() = listOf(
            arrayOf(
                "0の場合はfalse",
                0,
                false
            ),
            arrayOf(
                "1の場合はtrue",
                1,
                true
            ),
            arrayOf(
                "2の場合はfalse",
                2,
                false
            )
        )
    }
}

private val case: Stringはテストの内容を記述します。@Test内では利用されていませんが、実行結果やエラー時に表示されるので書いておくことをおすすめします。

caseを書かない場合

Parameterizedテストを書けるようにしておくとAndroidのコードから切り出したif文が正しく動作するか、data class内の関数が動作するかが確認できるようになります。