不包括maven中的Junit测试

时间:2016-09-06 15:49:35

标签: java maven junit pom.xml maven-surefire-plugin

我按照以下说明操作: http://maven.apache.org/surefire/maven-surefire-plugin/examples/inclusion-exclusion.html

我正在pom.xml中使用排除,但似乎无效。

以下是摘录:

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-surefire-plugin</artifactId>
   <version>2.19.1</version>
   <configuration>
      <argLine>${surefireArgLine}</argLine>
      <excludes>
         <exclude>${project.basedir}Test1.java</exclude>
      </excludes>
   </configuration>
</plugin>

2 个答案:

答案 0 :(得分:1)

如果您的测试类文件名为Test1.java,它将自动包含在Surefire的测试类中,因为它与通配符**/Test*.java匹配(包含默认值之一,请参阅问题中的链接) 。如果您要排除特定测试,则需要更改<exclude>标记,因为它有2个问题。

(1)您在基础之间没有分隔符(例如${project.basedir}/Test1.java

(2)maven中的类通常在一个目录结构中(如果有一个非默认的包,那么也是一个...应该有)。例如,${project.basedir}/src/test/java/com/foo/Test1.java

之类的内容

你的排除也应该使用通配符:

<exclude>**/Test1.java</exclude>

如果您想跳过所有测试,可以使用skipTests参数:

mvn clean install -DskipTests

答案 1 :(得分:0)

${project.basedir}指的是module/project的根文件夹。因此,如果Test1位于根文件夹下,则一旦您将排除声明更正为default-test,肯定会被surefire <exclude>${project.basedir}/Test1.java</exclude>目标排除。

如果根文件夹不是Test1所在的位置,则将Test1的位置映射到其他Maven POM变量here或使用通配符,如下所示:

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.19.1</version>
                <configuration>
                    <argLine>${surefireArgLine}</argLine>
                    <excludes>
                        <exclude>**/Test1.java</exclude>
                    </excludes>
                </configuration>
            </plugin>
         </plugins>
</build>

或者更简洁的方法是 create the property for the tests to exclude ,并将其用作maven surefire插件配置的一部分,如下所示:

<properties>
        <exclude.tests>**/Test1.java</exclude.tests>
</properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.19.1</version>
                <configuration>
                    <argLine>${surefireArgLine}</argLine>
                    <excludes>
                        <exclude>${exclude.tests}</exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>