Server-Side Kotlin Lounge #2「JavaからKotlinへの移行を考える」 - connpass で使用するテンプレのリポジトリです。
下記をインストールしてください。
- Oracle JDK 17
- Maven 3.8.4
- Gauge 1.4.2
- Docker もしくは Postgresql
以下のサンプルのドメインを実装してみます。
- Qiita、Zenn、はてブなど、記事を投稿できるさまざまなサービスのユーザを一括で管理するためのシステムを作ります
- 以下のような手順で利用できる Web API として作ります
POST /users
: ユーザを作りますPUT /users/{userId}
: ユーザに Qiita アカウントなどを紐付けますGET /articles?userId={userId}
: ユーザに紐付いてる全アカウントの全記事を取得します
IntelliJ IDEA に Gauge プラグインを入れた上で、e2e/specs/users.spec
を見ていただくと、上記仕様に関する具体的な情報を得られるかもしれません。
以下のライブラリ / フレームワーク / ソフトウェアを使って Web API を構築します。
- Ktor: Web フレームワーク
- Koin: DI フレームワーク
- Fuel: HTTP 通信用ライブラリ
- Exposed: O/R Mapper
また、テスト用に以下を使用します。
- Kotest: 単体テスト用フレームワーク
- mockk: 単体テスト用のモッキングライブラリ
- Gauge: 自動テスト作成用のフレームワーク、E2E テストの作成に使用
cd database
docker compose up -d
# 停止
docker compose down -v --rmi all
exec-maven-plugin の導入をサボったので、IntelliJ IDEA から server/src/main/kotlin/me/takehara/rest/Application.kt
の main
を実行してください。
gauge-maven-plugin により Gauge のテストを全実行できます。
cd e2e
mvn clean test
# unimplemented (アプリが未実装のテスト) を除外する場合
mvn clean test -Dtags='!unimplemented'