You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 18:24:28