JUnit実践入門を読んでいた際に,Mavenを用いたカテゴリ化テストではまったので書いておきます.
最終的にはどうしたか?
以下のようにJUnitとsurefireのversionを設定しました.
junitは4.8以上であればよく,surefireはある程度最新であれば明示的にjunit47を選択しなくとも問題ようです.
また,選択可能なタグは
excludedGroups
です.書籍では
excludeGroups
となっていましたが,誤植か古いバージョンでしか対応していないものと思われます.
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.8</version> <scope>test</scope> </dependency> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>3.0.0-M4</version> <configuration> <excludedGroups>jp.j_tech.java_tutorial.SlowTests</excludedGroups> </configuration> </plugin>
間違いパターン
下記のように,タグ内に記載すると正しく認識してくれませんでした.Effective POMを見れば違いが分かりますが,上記の正しい箇所に挿入した場合には3箇所に記載されますが,下記の間違いの場合,1か所にしか記載が追記されません.
<plugin> <artifactId>maven-surefire-plugin</artifactId> <version>3.0.0-M4</version> <executions> <execution> <configuration> <excludedGroups>jp.j_tech.java_tutorial.SlowTests</excludedGroups> </configuration> </execution> </executions> </plugin>
EclipseのEffective POMが正しく更新されない可能性
この問題を解決するために頻繁にPOMを変更していましたが,Effective POMに変更が加わるタイミングが謎です.
基本的な変更であればすぐに変更されるようですが,場合によっては保存しても実行してもビルドしても更新される訳ではない模様です.
ただし,実態としては変更されているので,POMが絶対的に正しいものとなります.
なお,対策としてはEclipseを再起動すれば確実に更新されて表示されます.
また,不安な場合は
mvn help:effective-pom
と打って表示させることが可能です.
頻繁にEffectivePOMとPOMを比較することはないと思いますが,EffectivePOMがPOMと同時期に更新されると考えていたために酷い目に会いました・・・.上記の正誤のEffectivePOMを比較しても差異がなかったので,なんでこれで動かないのかと・・