TL;DR
maven-surefire-pluginはデフォルトだと特定の命名規則に合致するテストクラスしか実行しない- 実行されないテストについては、クラス名を変えるか、パッケージ単位指定などを行う必要がある
状況
jackson-module-kotlinのメンテ中、verifyコマンドでは一部テストが実行されないことに気付きました。
調査した所、以下の記述に辿り着きました。
特定パターンに合致しない名前のクラスは、例え@Testアノテーションが付与されたメソッドが有ったとしてもテストされません。
By default, the Surefire Plugin will automatically include all test classes with the following wildcard patterns:
"**/Test*.java"- includes all of its subdirectories and all Java filenames that start with "Test"."**/*Test.java"- includes all of its subdirectories and all Java filenames that end with "Test"."**/*Tests.java"- includes all of its subdirectories and all Java filenames that end with "Tests"."**/*TestCase.java"- includes all of its subdirectories and all Java filenames that end with "TestCase".
対処
量が多かったこともあってパッケージ一括指定にしました。
<includes> <include>com.fasterxml.jackson.module.kotlin.**</include> </includes>
雑感
CIで実行されてないテストが有ると分かった時は正直ものすごく肝が冷えました。
自分がメンテナになる前の段階からこの状態になっているテストがいくつか有ったようで、そのまま拡充してしまっていました。
また、ローカルだとIntellijの単体実行や、自分で設定を書いて一括実行していたので気付かなかったです。
ただ、ローカルでちゃんと実行してはいたので、2.x系について致命的な状況が生じていなかったのは良かったです(3.x系には問題を出してしまいましたが、、、)。