ããã¯ããªã«ãããããŠæžãããã®ïŒ
Maven Surefire Pluginã«ã¯includes
ïŒ include
ãexcludes
ïŒ exclude
ã§ãã¹ããçµã蟌ãã ãé€å€ãããããæ©èœããããŸãã
ããã¥ã¡ã³ããèŠãŠãããšããªã«ãšããããããŠããã®ãããã€ãããããããªããªãã®ã§èª¿ã¹ãŠã¿ãŸããã
Maven Surefire Pluginã®includesãšexcludes
察象ã®ããã¥ã¡ã³ãã¯ãã¡ãã
Maven Surefire Plugin – Inclusions and Exclusions of Tests
ä»åã¯includes
ïŒ include
ã察象ã«ããŸãã
ãŸãã¯ã·ã³ãã«ãªäœ¿ãæ¹ããããµã³ãã«ã¯ãããªæãã§ããã
<configuration> <includes> <include>Sample.java</include> </includes> </configuration>
ã¯ã€ã«ãã«ãŒãïŒ*
ã**
ïŒãå«ããJavaã®ãœãŒã¹ã³ãŒãåã§æå®ããããã«èŠããŸãã
"**/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".
Inclusions and Exclusions of Tests / Inclusions
%regex[.*(Cat|Dog).*Test.*]
ã®ããã«ãæ£èŠè¡šçŸã§ã®æå®ãã§ããŸãã
Inclusions and Exclusions of Tests / Regular Expression Support
surefire:test
ã®ããã¥ã¡ã³ãã«ãåããããªããšããŸãšããããŠããŸãã
surefire:test / Parameter Details / includes
ãããããã£ã¡ãæå®ããããšæããšsrc/test/java/path/to/AbcTest.java
ãšãæžããã§ããâŠïŒãšããæ°ã«ãªãã®ã§ãMaven Surefire Pluginã®
includes
ïŒ include
ããªã«ãšããããããŠããã®ãã¡ãã£ãšèŠãŠã¿ãŸããã
ã¡ãªã¿ã«ãtest
ã䜿ããšã¡ãœããã¬ãã«ãŸã§çµã蟌ãã ããincludes
ïŒ include
ãexcludes
ïŒ exclude
ãäžæ¬ã§æå®ã§ããããš
ããã«æè»ã«æ±ããŸãã
surefire:test / Parameter Details / test
ããã¯include
ãexclude
ã«ã«ã³ãåºåãã§æå®ããããšã§åãåäœãå®çŸã§ããããã§ããä»åã¯ãã¡ãã¯æ±ããŸããã
Inclusions and Exclusions of Tests / Multiple Formats in One
ãŸãããããŸã§ã®è©±ã¯Maven Failsafe Pluginã§ãåãã ãšæããŸãã
Maven Failsafe Plugin – Inclusions and Exclusions of Tests
Maven Failsafe Plugin – failsafe:integration-test
ç°å¢
ä»åã®ç°å¢ã¯ãã¡ãã
$ java --version openjdk 21.0.4 2024-07-16 OpenJDK Runtime Environment (build 21.0.4+7-Ubuntu-1ubuntu222.04) OpenJDK 64-Bit Server VM (build 21.0.4+7-Ubuntu-1ubuntu222.04, mixed mode, sharing) $ mvn --version Apache Maven 3.9.8 (36645f6c9b5079805ea5009217e36f2cffd34256) Maven home: $HOME/.sdkman/candidates/maven/current Java version: 21.0.4, vendor: Ubuntu, runtime: /usr/lib/jvm/java-21-openjdk-amd64 Default locale: ja_JP, platform encoding: UTF-8 OS name: "linux", version: "5.15.0-117-generic", arch: "amd64", family: "unix"
æºå
MavenäŸåé¢ä¿ãªã©ã
<properties> <maven.compiler.release>21</maven.compiler.release> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> </properties> <dependencies> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter</artifactId> <version>5.10.3</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.3.1</version> <configuration> <!-- ããšã§ --> </configuration> </plugin> </plugins> </build>
Maven Surefire Pluginã®èšå®ã¯ããšã§æžããŸãã
ãã¹ãã³ãŒããçšæãã
ãã¹ã察象ãšãªããã¹ãã³ãŒããçšæããŸãã
Maven Surefire Pluginã®åäœãèŠãã ããªã®ã§ããã¹ãã®äžèº«ã¯èŠããŸãããããã®ã¯ãã¡ã€ã«åããã¹ã®ããªãšãŒã·ã§ã³ã§ããã
src/test/java/org/littlewings/surefire/SampleTest.java
package org.littlewings.surefire; import org.junit.jupiter.api.Test; class SampleTest { @Test void test() { } }
src/test/java/org/littlewings/surefire/sample/SampleTest.java
package org.littlewings.surefire.sample; import org.junit.jupiter.api.Test; class SampleTest { @Test void test() { } }
src/test/java/org/littlewings/surefire/foo/FooTest.java
package org.littlewings.surefire.foo; import org.junit.jupiter.api.Test; class FooTest { @Test void test() { } }
src/test/java/org/littlewings/surefire/bar/BarTest.java
package org.littlewings.surefire.bar; import org.junit.jupiter.api.Test; class BarTest { @Test void test() { } }
src/test/java/org/littlewings/surefire/hoge/HogeTest.java
package org.littlewings.surefire.hoge; import org.junit.jupiter.api.Test; public class HogeTest { @Test void test() { } }
Maven Surefire Pluginã®includesïŒincludeãèšå®ãã
çšæãããã¹ãã³ãŒãã®ãã¹ã¯ä»¥äžã§ãã
src/test/java/org/littlewings/surefire/SampleTest.java
src/test/java/org/littlewings/surefire/sample/SampleTest.java
src/test/java/org/littlewings/surefire/foo/FooTest.java
src/test/java/org/littlewings/surefire/bar/BarTest.java
src/test/java/org/littlewings/surefire/hoge/HogeTest.java
ãŸãã¯ãªã«ãèšå®ããã«ãã¹ããåãããŸãã
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.3.1</version> <configuration> </configuration> </plugin>
å®è¡ã
$ mvn test
åœç¶ã§ããããã¹ãŠã®ãã¹ãã³ãŒããå®è¡ãããŸãã
[INFO] ------------------------------------------------------- [INFO] T E S T S [INFO] ------------------------------------------------------- [INFO] Running org.littlewings.surefire.bar.BarTest [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.061 s -- in org.littlewings.surefire.bar.BarTest [INFO] Running org.littlewings.surefire.hoge.HogeTest [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 s -- in org.littlewings.surefire.hoge.HogeTest [INFO] Running org.littlewings.surefire.SampleTest [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 s -- in org.littlewings.surefire.SampleTest [INFO] Running org.littlewings.surefire.sample.SampleTest [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 s -- in org.littlewings.surefire.sample.SampleTest [INFO] Running org.littlewings.surefire.foo.FooTest [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 s -- in org.littlewings.surefire.foo.FooTest [INFO] [INFO] Results: [INFO] [INFO] Tests run: 5, Failures: 0, Errors: 0, Skipped: 0
SampleTest.java
ãšæžããŠã¿ãŸãã
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.3.1</version> <configuration> <includes> <include>SampleTest.java</include> </includes> </configuration> </plugin>
å®è¡ã
$ mvn test
2ã€ã®ãã¹ãã¯ã©ã¹ãå®è¡ãããŸããã
[INFO] ------------------------------------------------------- [INFO] T E S T S [INFO] ------------------------------------------------------- [INFO] Running org.littlewings.surefire.SampleTest [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.058 s -- in org.littlewings.surefire.SampleTest [INFO] Running org.littlewings.surefire.sample.SampleTest [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 s -- in org.littlewings.surefire.sample.SampleTest [INFO] [INFO] Results: [INFO] [INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0
åŸæ¹äžèŽããŠãããããªæãã§ããã
ããèšå®ããŠã¿ããšã©ãã§ããããã
â»ããããã¯configuration
ã®ã¿ãèšèŒããŸã
<configuration> <includes> <include>**/SampleTest.java</include> </includes> </configuration>
çµæã¯å€ãããŸãããã€ãŸããåãæå³ã ã£ããšããããšã«ãªãã®ã§ããããïŒ
â»mvn test
ã®å®è¡ã以éã¯çç¥ããŸã
[INFO] ------------------------------------------------------- [INFO] T E S T S [INFO] ------------------------------------------------------- [INFO] Running org.littlewings.surefire.SampleTest [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.049 s -- in org.littlewings.surefire.SampleTest [INFO] Running org.littlewings.surefire.sample.SampleTest [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 s -- in org.littlewings.surefire.sample.SampleTest [INFO] [INFO] Results: [INFO] [INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0
ã¡ãªã¿ã«ã.java
ãæžããªããŠãåãããããŸãã
<configuration> <includes> <include>**/SampleTest</include> </includes> </configuration>
çµæã
[INFO] ------------------------------------------------------- [INFO] T E S T S [INFO] ------------------------------------------------------- [INFO] Running org.littlewings.surefire.SampleTest [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.054 s -- in org.littlewings.surefire.SampleTest [INFO] Running org.littlewings.surefire.sample.SampleTest [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 s -- in org.littlewings.surefire.sample.SampleTest [INFO] [INFO] Results: [INFO] [INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0
ãããèŠããšãã¡ãã£ãšãªã«ã察象ã«ããŠãããããããªããªããŸãããâŠã
ã¯ã€ã«ãã«ãŒãã䜿ã£ãäŸã
<configuration> <includes> <include>**/Ba*Test.java</include> </includes> </configuration>
çµæã
[INFO] ------------------------------------------------------- [INFO] T E S T S [INFO] ------------------------------------------------------- [INFO] Running org.littlewings.surefire.bar.BarTest [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.043 s -- in org.littlewings.surefire.bar.BarTest [INFO] [INFO] Results: [INFO] [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
æ£èŠè¡šçŸã%regex[ãã¿ãŒã³]
ã§æžããŸãã
<configuration> <includes> <include>%regex[.*FooTest.*]</include> </includes> </configuration>
çµæã
[INFO] ------------------------------------------------------- [INFO] T E S T S [INFO] ------------------------------------------------------- [INFO] Running org.littlewings.surefire.foo.FooTest [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.048 s -- in org.littlewings.surefire.foo.FooTest [INFO] [INFO] Results: [INFO] [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
ååŸã®.*
ãéèŠã®ããã§ãåé€ãããšãã¹ã察象ã«ãªããªããªããŸãã
<configuration> <includes> <include>%regex[.*FooTest]</include> </includes> </configuration>
ãã¡ãããã¹ã察象ããŒãã«ãªããŸãã
<configuration> <includes> <include>%regex[FooTest.*]</include> </includes> </configuration>
æåŸã«çµã¿åããã§ã
<configuration> <includes> <include>SampleTest.java</include> <include>**/Ba*Test.java</include> <include>%regex[.*FooTest.*]</include> </includes> </configuration>
çµæã
[INFO] ------------------------------------------------------- [INFO] T E S T S [INFO] ------------------------------------------------------- [INFO] Running org.littlewings.surefire.bar.BarTest [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.064 s -- in org.littlewings.surefire.bar.BarTest [INFO] Running org.littlewings.surefire.SampleTest [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 s -- in org.littlewings.surefire.SampleTest [INFO] Running org.littlewings.surefire.sample.SampleTest [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.006 s -- in org.littlewings.surefire.sample.SampleTest [INFO] Running org.littlewings.surefire.foo.FooTest [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.005 s -- in org.littlewings.surefire.foo.FooTest [INFO] [INFO] Results: [INFO] [INFO] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0
Maven Surefire Pluginã®includeïŒexcludeã¯ãªã«ãèŠãŠããã®ãïŒ
Maven Surefire Pluginã§ãã¹ã察象ã«å«ããããŸãã¯é€å€ããããå€å®ããŠããã®ã¯ãã¡ãã§ãã
ãã¹ããæå®ããããã¿ãŒã³ã«äžèŽããã°ãã¹ã察象ãšãªãããŸãé€å€å¯Ÿè±¡ã«ããªããŸãã
boolean shouldRun = false; if (getIncludedPatterns().isEmpty()) { shouldRun = true; } else { for (ResolvedTest filter : getIncludedPatterns()) { if (filter.matchAsInclusive(testClassFile, methodName)) { shouldRun = true; break; } } } if (shouldRun) { for (ResolvedTest filter : getExcludedPatterns()) { if (filter.matchAsExclusive(testClassFile, methodName)) { shouldRun = false; break; } } } return shouldRun;
ããã察象ã¯ã¯ã©ã¹ãšã¡ãœãããããã®ã§ãããä»åã¯ã¡ãœããã®ã¿ãèŠãŸãã
ã¯ã©ã¹åã¯ä»¥äžã§ãã©ãŒããããããŸãã
ãã®æã.java
ã¯.class
ã«çœ®ãæããããŸãã
ãŸãããã¹ã®å
é ã**/
ã§å§ãŸã£ãŠããªãå Žåã¯è¿œå ãããŸãã
ã€ãŸããSampleTest.java
ã¯**/SampleTest.class
ãšåãã§ãã
.java
ãšããæãã§ãœãŒã¹ã³ãŒããæå®ããã®ã§ãããçµå±å¯Ÿè±¡ã«ããŠããã®ã¯.class
ã®ããã§ããã
ãããŠããã¡ãã§æž¡ãããã¯ã©ã¹ãã¡ã€ã«ãšãããããã確èªããã®ã§ããããã®æã«æž¡ãããtestClassFile
ã¯org/littlewings/surefire/SampleTest.class
ã®ãããªå€ãæž¡ã£ãŠããŸãã
ãšããããšã¯ãããããããå€å®ããŠããã®ã¯ãã¹ã察象ã®ãœãŒã¹ã³ãŒãã®ãã¹ã§ã¯ãªãããã¹ã察象ã®ã¯ã©ã¹ã§ããã
æ£èŠè¡šçŸã䜿ã£ãå Žåã¯ããã¹ã®è£æ£ã¯å
¥ããŸããããããŠãæå®ãããæ£èŠè¡šçŸã«å¯ŸããŠorg/littlewings/surefire/SampleTest.class
ã®
ãããªã¯ã©ã¹ã«å¯ŸããŠããããè©Šã¿ãŸãã
ãããªããšãååŸã®ãã¿ãŒã³ãåããšãããããªããªã£ãçç±ããããæ°ãããŸãã
ãããŸã§ããããšãå®ã¯.class
ã§æå®ããŠãããããšãããããŸããã
<configuration> <includes> <include>SampleTest.class</include> </includes> </configuration>
ãããŠãæ¡åŒµåããªããŠãããã£ãããšãããããŸãã
<configuration> <includes> <include>SampleTest</include> </includes> </configuration>
çµæã¯ã©ã¡ãããããªããŸãã
[INFO] ------------------------------------------------------- [INFO] T E S T S [INFO] ------------------------------------------------------- [INFO] Running org.littlewings.surefire.SampleTest [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.056 s -- in org.littlewings.surefire.SampleTest [INFO] Running org.littlewings.surefire.sample.SampleTest [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.005 s -- in org.littlewings.surefire.sample.SampleTest [INFO] [INFO] Results: [INFO] [INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0
ãªãã±çã«ã
<configuration> <includes> <include>**/sample/*SampleTest</include> </includes> </configuration>
çµæã
[INFO] ------------------------------------------------------- [INFO] T E S T S [INFO] ------------------------------------------------------- [INFO] Running org.littlewings.surefire.sample.SampleTest [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.056 s -- in org.littlewings.surefire.sample.SampleTest [INFO] [INFO] Results: [INFO] [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
ãããªãšããã§ããããã
ãããã«
Maven Surefire Pluginã®includeã«ãªã«ãæå®ãããããã®ãããããã£ãŠããªãã£ãã®ã§ãã¡ãã£ãšè©³ããã¿ãŠã¿ãŸããã
ãªããšãªãé°å²æ°ã§æå®ããŠããããšãå€ãã£ãã®ã§ãããã©ãããæåãããŠãããããã£ãã®ã§ã©ãæžããšã©ãããçµæã«ãªããã
ã ãã¶ãããããã«ãªã£ãæ°ãããŸãã