新品価格 |
androidでKotlinでコード書いてるマスタカ
当然ユニットテストが必要になるのだが
mockkがとても便利なので備忘録をメモする
mockkが便利な点の一つが、staticメソッドのmockが楽なこと
今回はそのやり方
・gradle
1 2 |
testImplementation 'junit:junit:4.12' testImplementation "io.mockk:mockk:1.8.13.kotlin13" |
・対象のコード
1 2 3 4 5 6 7 8 9 |
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する
1 2 3 4 5 6 7 8 9 10 11 |
@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する
1 2 3 4 5 6 7 8 9 |
@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をぜひ使ってください