对于Maven,有没有办法跳过包中的所有测试?

对于Maven,有没有办法跳过包中的所有测试?,maven,maven-surefire-plugin,Maven,Maven Surefire Plugin,当我运行单元测试时,我想跳过包中的所有测试,但我需要确保其他包中的测试正常工作 简言之,现在有三个方案: com.felix.a、com.felix.b和com.felix.c, 我不想运行com.felix.c中的测试类 我试图通过maven surefire-plugin对包进行过滤,但没有效果 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>ma

当我运行单元测试时,我想跳过包中的所有测试,但我需要确保其他包中的测试正常工作

简言之,现在有三个方案: com.felix.acom.felix.bcom.felix.c, 我不想运行com.felix.c中的测试类

我试图通过maven surefire-plugin对包进行过滤,但没有效果

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.20.1</version>
    <configuration>
        <excludes>
            <exclude>${basedir}/src/test/java/com/felix/c/*</exclude>
        </excludes>
    </configuration>
</plugin>

org.apache.maven.plugins
maven surefire插件
2.20.1
${basedir}/src/test/java/com/felix/c/*

谢谢

只需从exclude中删除前面的
${basedir}/src/test/java/
,它就会工作,正如插件已经暗示的那样。从中,还可以将完全限定的包名用于(可以说)更清晰的:

<configuration>
    <excludes>
        <exclude>com.felix.c.*</exclude>
    </excludes>
</configuration>

com.felix.c*

只要从您的exclude中删除前面的
${basedir}/src/test/java/
,它就会工作,正如插件已经暗示的那样。从中,还可以将完全限定的包名用于(可以说)更清晰的:

<configuration>
    <excludes>
        <exclude>com.felix.c.*</exclude>
    </excludes>
</configuration>

com.felix.c*

为什么要跳过包中的单元测试?为什么不运行它们呢?例如,您可能只想在激活特定配置文件时运行它们。当我将代码推送到gerrit时,gerrit将触发单元测试,但我不想在推送代码时运行此包中的单元测试,因为这是浪费时间,但稍后将由其他人运行。为什么要跳过包中的单元测试?为什么不运行它们呢?例如,您可能只想在激活特定配置文件时运行它们。当我将代码推送到gerrit时,gerrit将触发单元测试,但我不想在推送代码时运行此包中的单元测试,因为这是浪费时间,但它将由其他人稍后运行。谢谢您的回答,它帮助了我!但我有一个困惑。实际上,我想过滤的单元测试是
com.felix.test.example.demoestcase.java
com.felix.test.testcases.BaseFunctionTest.java
。当我使用
com.felix.test.*.*.*.*.
时它可以工作,而当我使用
com.felix.test.*.
时它不工作。不能使用“*”表示目录?这似乎不合理。似乎
*
与构成路径的
/
之外的任何字符都匹配。要包含子目录,必须使用
**
。如果您只想排除两个特定的测试,那么使用
**/example/demoestcase.java
**/testcases/BaseFunctionTest.java
com.felix.test.*
可以很好地解决这个问题。与你分享!谢谢你的回答,它帮助了我!但我有一个困惑。实际上,我想过滤的单元测试是
com.felix.test.example.demoestcase.java
com.felix.test.testcases.BaseFunctionTest.java
。当我使用
com.felix.test.*.*.*.*.
时它可以工作,而当我使用
com.felix.test.*.
时它不工作。不能使用“*”表示目录?这似乎不合理。似乎
*
与构成路径的
/
之外的任何字符都匹配。要包含子目录,必须使用
**
。如果您只想排除两个特定的测试,那么使用
**/example/demoestcase.java
**/testcases/BaseFunctionTest.java
com.felix.test.*
可以很好地解决这个问题。与你分享!