
androidでKotlinでコード書いてるマスタカ
当然ユニットテストが必要になるのだが
mockkがとても便利なので備忘録をメモする
mockkが便利な点の一つが、staticメソッドのmockが楽なこと
今回はそのやり方
・gradle
|
testImplementation 'junit:junit:4.12' testImplementation "io.mockk:mockk:1.8.13.kotlin13" |
・対象のコード
|
class Masterka { companion object { fun calculate(a: Int, b: Int): Int { val bitmap = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888) return a + b + bitmap.width } } } |
・Javaのstaticメソッドをmockする
|
@Test fun Bitmapをmockするテストだよ() { val expected = 102 mockkStatic(Bitmap::class) val mockBitmap = mockk<Bitmap>() every { mockBitmap.width } returns 100 every { Bitmap.createBitmap(any(), any(), any()) } returns mockBitmap val result = Masterka.calculate(1, 1) Assert.assertEquals(expected, result) clearStaticMockk(Bitmap::class) } |
・Kotlinのcompainon objectをmockする
|
@Test fun companionObjectをmockするテストだよ() { val expected = 1 mockkObject(Masterka) every { Masterka.calculate(any(), any()) } returns expected val result = Masterka.calculate(1, 1) Assert.assertEquals(expected, result) unmockkObject(Masterka) } |
これでmockができましたとさ
Kotlinでコード書いてる人はmockkをぜひ使ってください
関連記事: