Slide 1

Slide 1 text

KotlinのUnitTestの事例 2022年10月28日 Finatext Ltd. 山﨑 康行

Slide 2

Slide 2 text

Copyright © FINATEXT. All rights Reserved. 1
 自己紹介 山﨑 康行   @yasu_yamasaki ( 2018/12〜 Finatext ) ● バックエンド担当 ● JavaでのWebアプリケーション開発歴:8年 ● Kotlin歴:4年 ● フロント(Vue.js)とインフラもやります

Slide 3

Slide 3 text

Copyright © FINATEXT. All rights Reserved. 2
 今日話すこと ● KotlinによるWebアプリケーションUnitTestの事例 ○ 使ってるライブラリはJavaと大きく変わらない ○ Kotest使うとJUnitより簡潔にテストがかける ○ Javaでも使えるTestをサポートするライブラリの紹介

Slide 4

Slide 4 text

Copyright © FINATEXT. All rights Reserved. 3
 システムの概略

Slide 5

Slide 5 text

Copyright © FINATEXT. All rights Reserved. 4
 使用している主なライブラリ カテゴリ ライブラリ Java Build Gradle ○ Web Framework Ktor ☓ HTTP Client OkHttp ○ OR Mapper Exposed ☓ Connection Pool HikarCP ○ DB Migrate Flyway ○ Log Logback ○ Container Build jib ○ Testing Framework Kotest ☓ Ktor Test ktor-server-tests ☓ Mock (Test) MockServer ○ Container (Test) Testcontainers ○

Slide 6

Slide 6 text

Copyright © FINATEXT. All rights Reserved. 5
 UnitTest時の構成

Slide 7

Slide 7 text

Copyright © FINATEXT. All rights Reserved. 6
 Kotestとは ● KotlinのTesting Framework ● OSS ● Kotlin公式のものではない ○ 公式で紹介されてるのはJUnit ● KotlinのSyntaxを活用することで、JUnitより簡潔にTestを書ける ● やれることは概ねJUnitと同じ ● https://kotest.io/

Slide 8

Slide 8 text

Copyright © FINATEXT. All rights Reserved. 7
 サンプル

Slide 9

Slide 9 text

Copyright © FINATEXT. All rights Reserved. 8
 Kotestを使ったテストの書き方のサンプル

Slide 10

Slide 10 text

Copyright © FINATEXT. All rights Reserved. 9
 ケースのネストが簡単にできます

Slide 11

Slide 11 text

Copyright © FINATEXT. All rights Reserved. 10
 パラメータ化テストが簡単にできます

Slide 12

Slide 12 text

Copyright © FINATEXT. All rights Reserved. 11
 Javaでも使えるテストをサポートするライブラリの紹介 目立たせる

Slide 13

Slide 13 text

Copyright © FINATEXT. All rights Reserved. 12
 Javaでも使えるテストをサポートするライブラリの紹介 ● MockServer ○ モックサーバを簡単に建てられる ○ JUnit上で建てれば、テスト対象からのRequestのAssertも簡単にできる

Slide 14

Slide 14 text

Copyright © FINATEXT. All rights Reserved. 13
 Javaでも使えるテストをサポートするライブラリの紹介 ● Testcontainers ○ JUnitでDockerContainerを操作するためのライブラリ ○ Javaでembedして動かせないソフトウェア(PostgreSQLとか)とのテストを するときに活用できる

Slide 15

Slide 15 text

Copyright © FINATEXT. All rights Reserved. 14
 さいごに ● 質問・ご意見歓迎です ● 個別のご質問があれば @yasu_yamasaki 宛にご連絡ください ● 資料のURLもTwitterで共有いたします ● Finatext では一緒に働く仲間を募集中です ○ https://finatext.notion.site/finatext/Finatext-cd4ff36fb8bd4aa78a7835565c 655396

Slide 16

Slide 16 text

Copyright © FINATEXT. All rights Reserved. 15