こんにちは、ソリューション開発部の柴崎です。

本記事はアプレッソ Advent Calendar 第13日目の記事です。アプレッソ Advent Calendar に協力会社も参加しても良いとのことで、書かせていただきます! (2年連続2回目, 昨年の記事)

!(https://www.appresso.com/img/common/logo.jpg "Appresso")(https://www.appresso.com/servista/) をはじめとした「つなぐ」製品を展開する(https://www.appresso.com/)の AdventCalendar です。アプレッソで働くエンジニアたちが、仕事で使っている技...

俺達は、Ant を……強いられているんだッ!

昨今 Ant をビルドに使うことも少ないかと思いますが、今現在も Ant 本体の保守・改修は続いていており、現場によってはまだまだ Ant が現役であることがあります。そんな Ant を使わざるをえないけれど JUnit 5 を使いたいというニッチな要望を満たすために、Console Launcher 使ってみました。以下のような build.xml となりましたのでご査収ください。

なぜ Console Launcher を使うのか

Ant にJUnit タスクがありますが、残念なことに JUnit 5 に対応しておりません。Apache Ant 側でも JUnit 側でも対応するような動きがありません。

にある通り、Console Launcher を使うのがよさそうです。

補足

Console Launcher の入手方法や指定できるパラメータについては、以下の公式ドキュメントを参照してください。

ユニコードに対応している場合に --details-theme オプションに unicode を指定すると見やすいシンボルが使われるようになります。この記事では、ユニコードに対応しているかどうかを Script タスクで調べ対応している場合は有効にしています。

また Java タスクの <classpath> には、入手した junit-platform-console-standalone を含めます。これには JUnit 5 および JUnit 4 を実行できるライブラリが含まれていますが、Java Hamcrest の hamcrest-all は含まれていません。テストで利用している場合は、あわせて含める必要があります。

JUnit 5 と JUnit 4 のテストコードを実行できるか確認する

前述の build.xml で test を実行すると、path/to/test-classes ディレクトリ以下のクラスファイルからテストを探しを実行します。今回は、JUnit 5 と JUnit 4 のテストコード両方を一緒にテスト実行してみます。

見事に Ant から JUnit 5 と JUnit 4 両方のテストを実行することができました。

まとめ

Ant 本体側にコントリビュートするべきと思い、JUnitTask を見て isJUnit4 変数に歴史の重みを感じた結果、この記事の内容となりました。お察しください。

Ant の JUnit タスクすべてのパラメータをそのまま移行することはできないものの、本件の手法で過去のテストコードを残しつつ JUnit 5 のテストコードを Ant から実行できることがわかりました。Ant から JUnit 5 を使うというかなりニッチな内容で、今後公式に対応されるかもしれませんが、取り急ぎの対応として参考になれば幸いです。

 

この記事が気に入ったら
いいね!しよう

最新情報をお届けします

Twitter で「株式会社アークシステム」をフォローしよう!

それでも Ant を使いたい人のための JUnit 5https://devlog.arksystems.co.jp/wp-content/uploads/2017/12/ant_with_junit5-1200x600.pnghttps://devlog.arksystems.co.jp/wp-content/uploads/2017/12/ant_with_junit5-150x150.pngshibasakiソリューション開発部プログラミング開発環境・ツールJava,JUnit,Antこんにちは、ソリューション開発部の柴崎です。 本記事はアプレッソ Advent Calendar 第13日目の記事です。アプレッソ Advent Calendar に協力会社も参加しても良いとのことで、書かせていただきます! (2年連続2回目, 昨年の記事)俺達は、Ant を……強いられているんだッ! 昨今 Ant をビルドに使うことも少ないかと思いますが、今現在も Ant 本体の保守・改修は続いていており、現場によってはまだまだ Ant が現役であることがあります。そんな Ant を使わざるをえないけれど JUnit 5 を使いたいというニッチな要望を満たすために、Console Launcher 使ってみました。以下のような build.xml となりましたのでご査収ください。なぜ Console Launcher を使うのか Ant にJUnit タスクがありますが、残念なことに JUnit 5 に対応しておりません。Apache Ant 側でも JUnit 側でも対応するような動きがありません。Introduce Ant build support for the JUnit Platform · Issue #512 · junit-team/junit5...ARK Solution Development Division Developers Blog.