why
Springboot で作成した API をテストするために
End to End テストを書く。
https://hepokon365.hatenablog.com/entry/2020/11/16/012429
gauge を使うとマークダウンでテストシナリオを書いて、実装を kotlin で作成できるらしい。
Gauge
ゲージで作成すると、Springboot 関係なく、Kotlin のテスト用のアプリケーションが作れるらしい?
https://tech.toreta.in/entry/2020/12/15/110722
Toreta の記事を参考にすると、インストールの仕方とサンプルデータの入れ方が書いてある。
https://docs.gauge.org/getting_started/installing-gauge.html?os=linux&language=csharp&ide=vscode
公式 doc をみると、IntelliJ より VScode 推奨らしい?
インストール
curl -SsL https://downloads.gauge.org/stable | sh
❯ gauge -v
Gauge version: 1.4.3
Commit Hash: f98dd40
curl でインストールできる
コマンドでの実行の仕方
❯ gauge
Usage:
gauge <command> [flags] [args]
Examples:
gauge run specs/
gauge run --parallel specs/
guage run specs で指定した場所のスペックファイルが実行できるらしい。
実際は mvn test で実行できる。
Gauge の Kotlin プロジェクトを作成
https://yuya-hirooka.hatenablog.com/entry/2021/07/10/220438
yuyua-hirooka さんの記事を参考にする
~/source/gauge-kotlin
❯ gauge init java_maven
Initializing template from https://github.com/getgauge/template-java-maven/releases/latest/download/java_maven.zip
.
Copying Gauge template java_maven to current directory ...
Successfully initialized the project. Run specifications with "mvn clean test" in project root.
gauge init java_maven で maven_java でプロジェクトを作成した。
作成したプロジェクトを開く
IntelliJ で開くと、
- specs/ に Spec ファイルのサンプルの example.spec
- env/ default/ に設定ファイルのサンプルの default.properties
- src/test/java/ に Spec の実装のサンプルの StepImplementation.java
これらがセットアップされているのを確認できる。
pom.xml の propeties に Kotlin 1.3.70 を追加
最初は Java しか書けないので、Kotlin も使えるようにする。
<dependencies>
<dependency>
<groupId>com.thoughtworks.gauge</groupId>
<artifactId>gauge-java</artifactId>
<version>0.7.10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>3.17.2</version>
<scope>test</scope>
</dependency>
</dependencies>
pom.xml をみると、セットアップされた
- gauge-java
- assertj-core
これらのみが入っている。
https://yuya-hirooka.hatenablog.com/entry/2021/07/10/220438
https://qiita.com/megmogmog1965/items/36f3d778c0397b27b45e#properties
pom.xml の propeties に Kotlin を書いてバージョンを指定する。
<properties>
<kotlin.version>1.3.70</kotlin.version>
</properties>
pom.xml の dependency に kotlin-stdlib と kotlin-test を追加
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib</artifactId>
<version>${kotlin.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-test</artifactId>
<version>${kotlin.version}</version>
<scope>test</scope>
</dependency>
dependency に kotlin-stdlib と kotlin-test を追加
そしてmaven reload すると kotlin のライブラリが入る。
pom.xml の build / pluglins に kotlin-maven-plugin を追加
これがないとビルドできないと推測
plugins に kotlin-maven-plugin を入れて
execution に compile, test-complie
これらの id, phase, goals を書き
test-compile には configuration として sourceDirs の source に src/test/kotlin を指定する
<plugin>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<version>${kotlin.version}</version>
<executions>
<execution>
<id>compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
<execution>
<id>test-compile</id>
<phase>test-compile</phase>
<goals>
<goal>test-compile</goal>
</goals>
<configuration>
<sourceDirs>
<source>src/test/kotlin</source>
</sourceDirs>
</configuration>
</execution>
</executions>
</plugin>
これで kotiln をコンパイルできるようにすると推測
CUI でデフォルトの Spec ファイルを実行する。
GUI は IntelliJ plugin 入れないとできなそうで
クリックで飛ぶのも無理だった。
なので CUI で実行する。
mvn test
# Specification Heading
## Vowel counts in single word ✔ ✔
## Vowel counts in multiple word ✔ ✔
これで specs/example.spec が動き
CUI で既存の Spec ファイルが実行できた。
Kotlin で Step の実装ファイルを作成して実行する
次は Kotlin で新たに Step ファイルを作成して実行してみる
test / java に並列して test / kotlin を作成
imp.kt という名前で作る
import com.thoughtworks.gauge.Step
class HelloKotlin {
@Step("test kotlin")
fun hello(){
println("Hello, kotlin")
}
}
完全に Kotlin の文法で Step の実装を書いてみる
Hello Kotlin
---------------------------
* test kotlin
これを mvn test で発動すると
# Specification Heading
## Hello Kotlin ✔Hello, kotlin
✔
## Vowel counts in multiple word ✔ ✔
読まれた!!!
まとめ
Gauge プロジェクトを作成して Kotlin でテストの実装を書くためには
Gauge をインストールして gauge init でプロジェクトを作成
pom.xml の propeties に Kotlin を追加
pom.xml の dependency に kotlin-stdlib と kotlin-test を追加
pom.xml の build/plugins に kotlin-maven-plugin を追加して
execution に compile, test-complie を追加し
test-complie の sourceDirs の source に src/test/kotlin を追加する
これでプロジェクトの src/test/imp.kotlin を追加して Step を書き
specs/example.spec で Step を呼び出すことで
Kotlin で書いた Step の実装を呼び出せる!
今後
https://tech.uzabase.com/entry/2019/11/12/120539
この記事を参考にして、Before Suit で DB のセットアップも作る
Top comments (0)