0

我们的项目结构看起来像这样(抱歉格式化):

server/
       pom.xml
       src/
           main/
                java/
           test/
                java/
           it/
                java/

无论测试名称如何,我mvn clean test都想跳过 it/java中的所有测试。我看到的解决方案取决于集成测试在不同的包中或在名称上带有一些前缀以表明它们是集成测试。

有没有办法在我运行时将它/java 排除在运行之外mvn clean test?最终,我们希望能够通过运行 mvn integration-test 来运行集成测试。

4

2 回答 2

1

您最好的办法可能是使其成为一个多模块项目,然后在 it 模块中跳过基于不同 maven 属性的测试。这将为您提供所需的灵活性。

于 2013-07-17T15:43:47.593 回答
1

我不认为 src/it/java 是 maven 已知的文件夹,所以如果您将测试放在那里,它们将被忽略,因为它是 maven 的随机文件夹?:)

反正。要执行集成测试,我建议使用为此构建的 maven-failsafe-plugin:http ://maven.apache.org/surefire/maven-failsafe-plugin/ 它还依赖于一些命名约定来区分集成测试和标准的,但我可以重新配置 testSourceDirectory。但是我认为如果您更改该文件夹(但这应该是可能的),则可能需要先编译这些类。

然后将单元测试配置为由 maven-surefire-plugin 执行。

我通常要做的是让surefire-plugin执行所有测试,但排除IntegrationTests(在配置中使用模式),而failsafe-plugin包括那些但排除标准测试。但是我有不同的测试名称,所以我可以使用文件夹的约定。

于 2013-07-17T15:57:43.573 回答