如何在Maven中为JUnit单元测试启用--enable-preview特性?
为JUnit 4启用Java Preview特性的Maven配置
要让JUnit测试支持Preview特性(比如Pattern Matching Switch),你需要同时配置测试代码编译和测试运行时两个环节的参数,具体如下:
1. 确保测试代码编译时启用Preview
你的maven-compiler-plugin当前只配置了主源码的编译参数,需要补充测试代码的编译配置,让测试类在编译时也能识别Preview特性:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.10.1</version> <!-- 建议升级到兼容Java 18的新版本 --> <configuration> <source>18</source> <target>18</target> <compilerArgs> <arg>--enable-preview</arg> </compilerArgs> <!-- 显式配置测试代码编译参数 --> <testCompilerArgs> <arg>--enable-preview</arg> </testCompilerArgs> </configuration> </plugin>
注:旧版本
maven-compiler-plugin(如你当前的3.1)对Java 18的支持不完善,建议升级到3.10.1及以上版本。
2. 配置测试运行时的JVM参数
测试代码编译完成后,运行JUnit测试时需要给JVM传递--enable-preview参数,这需要通过maven-surefire-plugin配置:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.0.0-M7</version> <!-- 适配Java 18的版本 --> <configuration> <argLine>--enable-preview</argLine> </configuration> </plugin>
完整相关配置片段
把上述配置整合到你的pom.xml中,最终相关部分如下:
<plugins> <!-- 编译插件:主代码+测试代码均启用Preview --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.10.1</version> <configuration> <source>18</source> <target>18</target> <compilerArgs> <arg>--enable-preview</arg> </compilerArgs> <testCompilerArgs> <arg>--enable-preview</arg> </testCompilerArgs> </configuration> </plugin> <!-- 测试运行插件:传递Preview参数给JVM --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.0.0-M7</version> <configuration> <argLine>--enable-preview</argLine> </configuration> </plugin> </plugins> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency> </dependencies>
配置完成后,执行mvn test命令,JUnit测试就能正常运行使用了Preview特性的代码。
内容的提问来源于stack exchange,提问作者rwallace
相关产品推荐
相关产品推荐

