Mavenコマンド経由でテストするとExtentionが呼ばれない
経緯
dbadger(JUnit5のExtention)を作っているときに、テストを書いていたら以下の現象が起きた
Intellijのテスト実行機能からテストを実行すると、テストクラスに登録したExtentionが想定どおり呼ばれて、テストは成功する
mvn test からテストを実行すると、テストクラスに登録したExtentionが呼ばれず、テストが失敗してしまう
surefireのバージョンが古い?
mavenでテストを実行すると、test frameworkのSurefireがテストを実行してくれる
色々試していたところ、pom.xmlのpluginにmaven-surefire-plugin の最近のバージョンを指定すると動くことがわかった
code: pom.xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M4</version>
</plugin>
以下の記事によるとsurefireのバージョンが、2.20.0移行で無いとJUnit5のテストが実行出来ないらしい
JUnit5側のドキュメントにもそのような記述がある
確かにmaven-surefire-plugin のバージョンを指定せずにテストを実行したときは、バージョンが2.20.0を下回っていた
code: mvn test
....
INFO --- maven-surefire-plugin:2.12.4:test (default-test) @ db-test-extention --- INFO Surefire report directory: /home/yuizho/work/java/db_test_extention/target/surefire-reports 結論
JUnit5をサポートしてない古いsurefireでも@Test は動く
しかし、JUnit5のExtentionなどの機能を使うとうまく動かないことがあるので、surefire-pluginのバージョンをpom.xml内で指定するのが無難そう