かんがるーさんの日記

最近自分が興味をもったものを調べた時の手順等を書いています。今は Spring Boot をいじっています。

Spring Boot 2.0.x の Web アプリを 2.1.x へバージョンアップする ( 感想 )

記事一覧はこちらです。

  • Spring Boot 2.1 へのバージョンアップは現在使用している機能に関しては大きな変更はなかったのですが、

    • @ExtendWith(SpringExtension.class) が自動で付くようになったので、-Xlint:all オプションを付けた状態で JUnit 5 に切り替えていないと compileTestJava タスクで警告が出る。
    • gradle からテストを実行した時は何も出ないが、IntelliJ IDEA 上から実行すると Command line is too long. のエラーが表示される。

    のようにいつもと違ったところで警告やエラーが出た印象です。

  • 今回一番時間がかかったのは Spring Boot のバージョンアップよりも JUnit 5 への切り替えの方でした。JUnit 5 もバージョン 5.4 から BOM が提供されたり、junit-jupiter を指定すれば junit-jupiter-api, junit-jupiter-params, junit-jupiter-engine の3つが依存関係に追加されるようになったり、Spring Boot 2.1 から @ExtendWith(SpringExtension.class) が自動で付与されるようになって記述する必要がなくなったり、とかなり導入しやすくなりました。テストも JUnit 4 と比較すると JUnit 5 の方が書きやすいですね。

    ただし Spock といまひとつ相性が良くありません。JUnit 5 の junit-vintage-engine 下だと Spock のテストが動かない場合がありました。Gradle だと Spock と JUnit 5 のテストのタスクを分けることが出来たので、とりあえずは問題ないかな。。。

  • JDK 11 へのバージョンアップは PowerMock と Groovy 周りで問題が発生しましたが、解決策も割と簡単に見つかって難しくはありませんでした。今回一番大変なところだろうと思っていたのですが、それ程でもありませんでした。error-prone も JDK 11 だと導入・設定が JDK 8 の頃と比べて簡単になった印象です。

さて、次に何を書くかを考えましょうか。。。