JUnitのfilter.includeTestsMatchingでハマったので備忘録

もうすぐ開発が始まるが比較的スケジュールにゆとりがあるので、前回の案件では手動で行っていたバッチのテストをJUnitで実施したく色々調べてみた。

うちのプロジェクトはAPIは自動テストを行う文化があるが、バッチは手動なのでそもそもの依存関係の調査からスタート。

バッチが格納されているパッケージのbuild.gradleを見てみると以下のようになっていたので、どうやらJUnitは使える状況らしい。
※excludeの指定によりjUnit5しか使えない状態

testImplementation('org.springframework.boot:spring-boot-starter-test') { 
    exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' 
}

ということで、簡単な以下テストを動くかまず試してみると

@Test
void test() {
   assertEquals(1, 1);
}

下記のように"filter.includeTestsMatching"と何らかの条件に引っかかっているとの文言が、、

Caused by: org.gradle.api.tasks.testing.TestExecutionException: No tests found for given includes: [***Test](filter.includeTestsMatching)

調べたところ、下記サイトに「テストメソッドにpublicを付けたらいいよ~」とのコメントが有り。publicにしたらテストが成功した。
https://stackoverflow.com/questions/58476580/no-tests-found-for-given-includes-testfilter-includetestsmatching

ただ、JUnit5のドキュメントには下記の記述があるので、publicで何が変わたのか分からない。。(もしかしたら違う箇所をイジってでうまく行った可能性はあるので明日色々試してみよう)

https://junit.org/junit5/docs/current/user-guide/
情報:テストクラスもテストメソッドも publicである必要はありません

この記事が気に入ったらサポートをしてみませんか?