Slide 1

Slide 1 text

Kotlinでもテスト書きたい 2016-06-09 Android Testing Bootcamp #2 @ngsw_taro

Slide 2

Slide 2 text

Kotlin ● JetBrains開発のJVM言語 ● 2011年7月に登場、2016年2月に正式リリース ● Android開発にも使えて最近注目を集めている

Slide 3

Slide 3 text

まとめ ● knit: JUnitをKotlinらしく使えるよ! ● kmockito: MockitoをKotlinらしく使えるよ! ● kaptAndroidTest: テストでkapt使えるよ!

Slide 4

Slide 4 text

自己紹介 ● たろー @ngsw_taro ● プログラマー@エムスリー株式会社 ○ Android, Kotlin, Java, Scala, Rubyなど ● Kotlinエバンジェリスト(JetBrains黙認) ○ 日本Kotlinユーザグループ代表 ○ Kotlinスタートブック 夏に発売! ● やすべえとディズニーが好き

Slide 5

Slide 5 text

1. knitを使う

Slide 6

Slide 6 text

KotlinでJUnitする // JUnit assertThat(actual, `is`(expected))

Slide 7

Slide 7 text

KotlinでJUnitする // JUnit assertThat(actual, `is`(expected)) ダサい

Slide 8

Slide 8 text

knit(ニット)を作った ● JUnitの薄いラッパー ● 今すぐダウンロード github.com/ntaro/knit

Slide 9

Slide 9 text

knitを使うと // knit actual.should be expected

Slide 10

Slide 10 text

やってることは単純 actual.should be expected assertThat(actual, `is`(expected))

Slide 11

Slide 11 text

2. kmockitoを使う

Slide 12

Slide 12 text

KotlinでMockitoする // Mokcito val repository = mock(Repository::class.java) `when`(repository.findAll()) .thenReturn(users)

Slide 13

Slide 13 text

KotlinでMockitoする // Mokcito val repository = mock(Repository::class.java) `when`(repository.findAll()) .thenReturn(users) ダサい ダサい

Slide 14

Slide 14 text

kmockito by @sys1yagi ● Mockitoラッパー ● 今すぐダウンロード github.com/sys1yagi/kmockito

Slide 15

Slide 15 text

kmockitoを使うと // Mokcito val repository = mock() repository.findAll().invoked .thenReturn(users)

Slide 16

Slide 16 text

3. kaptAndroidTestを使う

Slide 17

Slide 17 text

kapt // product kapt 'com.google.dagger:dagger-compiler:2.4' // test kaptAndroidTest 'com.google.dagger:dagger-compiler:2.4' ● KotlinでAnnotation Processingするためのツール ● Dagger2とか

Slide 18

Slide 18 text

おまけ

Slide 19

Slide 19 text

予約語エスケープ、テストで便利だった class `be - expected` { @Test fun `does nothing when target equals expected`() { sut be java.lang.String("Kotlin").toString() } @Test(expected = AssertionError::class) fun `throws error when target does not equal expected`() { sut be "kotlin" } }

Slide 20

Slide 20 text

まとめ ● knit: JUnitをKotlinらしく使えるよ! ● kmockito: MockitoをKotlinらしく使えるよ! ● kaptAndroidTest: テストでkapt使えるよ!

Slide 21

Slide 21 text

ご清聴 ありがとうごじました