AllIsHackedOff

Just a memo, just a progress

KotlinでPrivate Methodをテスト

[2] の方法で実施しようとしたら trySetAccessible が解決できなくて gradle test がエラーになった。 IntelliJでは補完が効いているので謎である。詰まっていても先に進まないので[2]の方法を試したらうまくいった。

    @Test
    fun test6() {
        val tc = TitleConferrer()

        val method = tc::class.memberFunctions.find { it.name == "hoge" }
        val actual = method?.let {
            it.isAccessible = true
            println(it.toString())
            it.call(tc)
        }

find で見つけるのはなんだか効率悪そうなので、抽象化されたメソッドがあるかと思ったが補完候補の中には見当たらなかったので一旦スルー

java.lang.reflect.Methodkotlin.reflect の差異だろうか

References

  1. Kotlinのリフレクション(protected/privateメソッド呼び出し) - White Box技術部
  2. Kotlinでprivateメソッドをテストする

Memo

java.lang.reflect.Methodkotlin.reflect の差異については理解を深めておく 基本的には kotlin.reflect を使えばいいのだろうか