#3 : KarateでSpring Boot APIをテストしよう【Karateで始めるAPI自動テスト入門】

Java

はじめに

こんにちは!ご覧いただきありがとうございます。【Java×Spring Boot×KarateではじめるAPI自動テスト】シリーズ、今回は、前回の記事で作った/helloエンドポイントに対してKarateというテストツールで自動テストを行う方法を解説します!

Karateとは?

KarateはWeb APIのテストを簡単に自動化できるツールです。
Javaベースで動きますが英語に近い記法で書けるのが特徴で、APIの動作確認や検証を直感的に行うことができます。

今回のゴール

今回のゴールは以下です!APIテストの基本的な書き方と、実行手順を理解していきましょう。

・Karateの設定方法を知る
・/helloに対するGETリクエストのテストを書く
・テストを実行して結果を確認

【実践】Karateを導入してAPIテストをする

では、実際のAPIテストまでを以下の手順で実施していきましょう。

1. プロジェクトにKarateを導入
2. テストファイルを作成
3. テストを実行

1. プロジェクトにKarateを導入

Karateは、プロジェクトにライブラリとして追加するだけで簡単に使えるようになります。pom.xmlファイルに依存関係を書いていきましょう
<dependencies>タグ内の他の依存関係の下に追記する形でOKです!

<dependency>
<groupId>com.intuit.karate</groupId>
<artifactId>karate-junit5</artifactId>
<version>1.4.1</version>
<scope>test</scope>
</dependency>
karate-junit5 … JUnit5ベースでKarateのテストを実行するためのライブラリ

ファイルが編集できたら依存関係をダウンロードするために以下のコマンドを実行します。

./mvnw clean install

コマンドを実行したあと、以下のようなログが表示されていれば、正常にダウンロードされてビルドも成功しています。

2.テストファイルを作成

Karateでテストを行うために、「何をテストするか」を書く .fatureファイルと、それを実行するための JUnitのランナークラスを新たに追加します。

フォルダ構成を作る

今回はプロジェクトのsrc/test/java 以下にテストに必要なフォルダとファイルを追加します。

src/
   └── test/
       └── java/
           └── examples/ ← 追加
               ├── HelloTest.feature ← 追加
               └── HelloTestRunner.java ← 追加
HelloTest.feature の作成

HelloTest.teatureファイルに、GETリクエストのテストコードを記載していきます。

Feature: Test for /hello API

Scenario: Call GET /hello and check response
Given url 'http://localhost:8080/hello'
When method GET
Then status 200
And match response == 'Hello, API!'

/hello エンドポイントにGETリクエストを送り、ステータスが200 OKか、返ってくる値が Hello, API! と一致するかを確認する内容です。

HelloTestRunner.java の作成

次に、この.fatureファイルをJUnitから実行するためのランナークラスを作ります。

package examples;

import com.intuit.karate.junit5.Karate;

class HelloTestRunner {


    @Karate.Test
    Karate testHello() {
        return Karate.run("HelloTest").relativeTo(getClass());
    }
}

Karate.run(“HelloTest”) の “HelloTest” は .feature ファイル名に対応していますね!

 

これでテストを実行する準備が完了しました!

3. テストを実行

では実際に次のような流れでテストを実行してみます!ポイントと合わせて確認していきましょう。

3-1. Spring Bootアプリの起動確認
3-2. Karateのテストを実行する
3-3. 実行結果の確認

3-1. Spring Bootアプリの起動確認

Karateは、実際に動いているAPIに対してテストを行うため、Spring Bootアプリが正しく起動している必要があります。次のポイントをチェックしておきましょう。

  • ターミナルにTomcat started on port 8080のログが出ているか

  • ブラウザで http://localhost:8080/hello にアクセスして “Hello, API!” と表示されるか

3-2. Karateのテストを実行する

HelloTestRunner.java の testHello() の左側に表示されている「▷」アイコンをクリックすると実行されます。

以下のコマンドでも実行可能です。

./mvnw test -Dtest=HelloTestRunner

3-3. 実行結果の確認

実行されるとログが表示されるのでポイントを確認していきます。

このログからはFeatureファイルの中で定義されたテストシナリオが、すべて正常に通ったことが分かります。

ログの内容
feature : 実行されたFeatureファイルの場所
scenarios : テストシナリオの数
passed : 成功したシナリオの数 ( 今回は1件すべて成功)
failed : 失敗したシナリオの数
time : テストの実行にかかった時間(秒)
また、karateのレポートファイルも自動で生成されるので、ブラウザからもテストの詳細を確認できます。
(例:file:/xxxxxx/target/karate-reports/karate-summary.html
補足:テスト失敗時のチェックポイント

もしテストが失敗していた場合は以下のポイントも確認してみてください。

  • Spring Bootアプリが落ちていないか/ポートがあっているか
  • /helloエンドポイントのレスポンスがHello, API!になっているか
  • ファイル名やパスは正しいか

まとめ

今回は、Karateを使って実際にAPIのテスト実行までの実践でした。実際に書いてみるとKarateのテストコードは直感的だと感じる方も多いと思います!
次回は、より実践的なテストとして「POSTメソッド」や「リクエストボディ」「JSONレスポンスの中身の検証」を行います。Karateをより活用できるようにステップアップしていきましょう!
最後までお読みいただきありがとうございました。

タイトルとURLをコピーしました