gpt4 book ai didi

java - 如何将另一个测试源文件夹添加到 Maven 并将其编译到单独的文件夹中?

转载 作者:IT老高 更新时间:2023-10-28 20:53:34 26 4
gpt4 key购买 nike

我有用于单元测试的默认 src/test/java 文件夹。单独的文件夹 src/integration/java 可用于集成测试。

我配置了 maven-surefire-plugin 以在各自的阶段执行单元/集成测试。当编译的类位于正确的目录中时,这非常有用。不幸的是,Maven 只支持一个测试源文件夹和一个测试输出文件夹。

使用 mavens build-helper 插件,我可以添加另一个测试源文件夹,但编译后的类将生成到 test-classes 但我想从 src/integration/编译类javatarget/integration-test-classes 中。这可能吗?

src/test/java > target/test-classes
src/integration/java > target/integration-test-classes

PS:我不喜欢这种排除/包含基于包的解决方案(从默认测试阶段排除所有 **/it/** 文件,并排除所有 **/unit/** 来自集成阶段。

最佳答案

根据您所写的内容,您似乎没有正确命名集成测试并且您没有使用 maven-failsafe-plugin用于您的集成测试。基于 maven-failsafe-plugin 的约定您应该将集成测试命名为 *IT.java。如果您适本地命名了集成测试,您可以使用或多或少的配置来处理它:

<project ...>
[...]
<build>
[...]
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.9.1</version>
<executions>
<execution>
<id>add-test-source</id>
<phase>generate-test-sources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>src/integration/java</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
[...]
</build>
[...]
</project>

通过上述方法,可以在同一个模块中进行集成测试。但这并不能解决将编译后的集成测试类放到一个单独的文件夹中的想法。

有时最好有一个单独的集成测试模块,它只包含集成测试(这会导致构建多模块)。如果您想离开 Maven 的约定,您可以尝试配置 maven-compiler-plugin 以使用不同的输出路径(例如,target/integration-tests/classes),这不会真的很管用。

关于java - 如何将另一个测试源文件夹添加到 Maven 并将其编译到单独的文件夹中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10138559/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com