java.lang.NoSuchMethodException
が発生 😵build.gradle.kts
にdependencies {
implementation(kotlin("reflect"))
}
import androidx.lifecycle.ViewModel
class SampleViewModel : ViewModel() {
/**
* @return 文字列
*/
private fun getText() = "じゃあそこ試合決定で"
}
import org.junit.Assert.assertEquals
import org.junit.Before
import org.junit.Test
class ExampleUnitTest {
private lateinit var sampleViewModel: SampleViewModel
@Before
fun setUp() {
sampleViewModel = SampleViewModel()
}
@Test
fun reflection() {
// プライベート関数を取得
val method = sampleViewModel.javaClass.getDeclaredMethod("getText").also { method ->
method.isAccessible = true // プライベート関数へのアクセスを許可
}
// 関数を呼び出して戻り値を取得
val actual = method.invoke(sampleViewModel) as String
// 期待する結果と比較
assertEquals("じゃあそこ試合決定で", actual)
}
}
implementation "org.jetbrains.kotlin:kotlin-reflect:$reflect_version"
の記載をせずともユニテが通りました ◎compileSdk
や targetSdk
, Kotlin 諸々のバージョンや依存しているライブラリによって発生していたのかもしれません 🤔