mockk使いたくてしょうがなかったけど
古いアプリでmockito2がべったり入ってるコードがあった
なのでmockito2を使ってkotlinのprivateメソッドをテストしてみた
・実装クラス
1 2 3 4 5 6 7 |
class ABC { fun exec() = "exec" } class Masterka(val abc: ABC) { private fun writeBlog() = abc.exec() } |
・テストクラス
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
class MockitoTest { @Mock lateinit var abc: ABC @BeforeEach fun init() { MockitoAnnotations.initMocks(this) } @Test fun `プライベートメソッドをテスト`() { `when`(abc.exec()).thenReturn("masterka") val masterka = Masterka(abc) val method = masterka::class.memberFunctions.find { it.name == "writeBlog" } val result = method?.let { it.isAccessible = true it.call(masterka) } assertThat(result).isEqualTo("masterka") } } |
・test/resources/mockito-extensions/org.mockito.plugins.MockMaker
1 |
mock-maker-inline |
これでmockitoとkotlinでprivateメソッドをテストできましたとさ