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

Maven中test与java目录间存在子目录时如何正常执行测试

问题根因

Maven默认的测试源码扫描根路径为src/test/java,在test目录和java目录之间新增demo中间目录后,实际测试源码路径变为src/test/demo/java,不在maven-compiler-plugin、maven-surefire-plugin的默认扫描范围内,因此会出现测试阶段无源码可编译、无测试用例可执行的问题,后续Cucumber报告插件因为拿不到测试生成的结果文件,自然会抛出异常。

修复步骤

核心是修改Maven内置的测试源码路径变量,不需要引入第三方路径辅助插件,直接在项目pom.xml中显式指定调整后的测试源码路径即可,不需要修改其他业务代码或测试代码:

  • 首先在<build>节点下声明新的测试源码根目录,这是Maven原生支持的配置项:
<build>
    <!-- 指向调整后的测试java文件根目录 -->
    <testSourceDirectory>${project.basedir}/src/test/demo/java</testSourceDirectory>
    <!-- 如果你的测试资源文件(比如Cucumber的feature文件、配置文件)也同步挪到了src/test/demo/resources目录下,就补充下面的配置,没挪位置就不需要加 -->
    <!--
    <testResources>
        <testResource>
            <directory>${project.basedir}/src/test/demo/resources</directory>
        </testResource>
    </testResources>
    -->

    <plugins>
        <!-- 原有maven-compiler-plugin 3.10.0配置保留即可,插件会自动读取上面配置的testSourceDirectory路径编译测试源码,不需要额外修改参数 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.10.0</version>
            <!-- 你之前配置的source/target/编码等参数全部保留 -->
        </plugin>

        <!-- 原有maven-surefire-plugin 3.0.0-M5补充路径关联配置,确保测试扫描路径和源码路径一致 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>3.0.0-M5</version>
            <configuration>
                <testSourceDirectory>${project.testSourceDirectory}</testSourceDirectory>
                <!-- 保持原有的测试匹配规则即可,默认会扫描命名符合*Test.java、*IT.java的测试类、Cucumber启动类 -->
            </configuration>
        </plugin>

        <!-- 原有Cucumber报告插件配置不需要修改,测试正常执行生成结果文件后,就不会再抛出文件不存在的异常 -->
    </plugins>
</build>
验证方式

配置修改完成后,先执行mvn clean test-compile命令,查看控制台输出的测试类编译数量,确认所有测试类都被正常编译后,再执行mvn clean install即可完整走通测试执行、报告生成的全流程。

注意:如果是多模块项目,上述路径配置要写在对应模块的pom.xml中,确保相对路径和模块实际目录结构匹配,不要写错层级。

内容的提问来源于stack exchange,提问作者matt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 04:18:35