Keep on moving

あんまりまとまってないことを書きますよ

小規模なライブラリでのJUnit5 migration方法

JUnit 5がついにリリースされましたね。

後方互換性がなくなったこともあって、使い方を覚えたくなって私の自作ボットエンジン(Java版のHubot的なもの)をJUnit5で動くようにマイグレーションしてみました。

TL:DR

github.com

題材

GitHub - masahitojp/botan-core: tiny chat bot framework for Java SE 8.(like a Hubot)

Java8 Lambdaでパフォーマンスがどれくらい変わるかみるためにつくったもの

マイグレーション用の資料

JUnit 5 User Guide

Release JUnit 5.0.0 · junit-team/junit5 · GitHub

>> JUnit 5.0.0 = Platform 1.0.0 + Jupiter 5.0.0 + Vintage 4.12.0

今までと違ってテスト実行エンジンとテスト用の記法が別れてると考えるといいかも(まだちゃんと理解できてません)
VintageはJUnit4との互換性を残すためのものらしい

置き換え方

ざっくり以下の用に置き換えると無事移行できました

名前 4 5
Before org.junit.Before org.junit.jupiter.api.BeforeEach
After org.junit.After org.junit.jupiter.api.AfterEach
Test org.junit.Test org.junit.jupiter.api.Test
assertEquals org.junit.Assert.assertEquals org.junit.jupiter.api.Assertions.assertEquals

ざっくりした例ですがこんな感じになります。
github.com

まとめ

変更点は大きいし、ライブラリにもたくさん文章が増えていますが、テストが少ないせいかマイグレーションするのは
ドキュメントを調べる時間もいれて30分位ですみました。
個人的にはBefore -> BeforeEachに名前が変わったことでいつ実行されるかわかりやすくなったと思います。
みなさんのマイグレーションの一助になるといいなーと思っています。

JUnit5の実装をすすめた皆さん本当にありがとうございました。