Maven - 将集成测试与单元测试分开

13

在同一个模块中,是否有可能将集成测试与单元测试分开?

我创建了一个简单的POM:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <artifactId>prj</artifactId>
    <packaging>war</packaging>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>**/integration/**/*.java</exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>integration</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <configuration>
                            <includes>
                                <include>**/integration/**/*.java</include>
                            </includes>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

</project>

但是使用mvn -Pintegration test时它并没有调用任何内容。如果我在主构建中将excludes部分注释掉,那么它就开始执行测试了,但没有配置文件。

1个回答

13

改为:

<exclude>*/integration/**/*.java</exclude>

尝试:

 <include>*/unit/**.java</include>

然后在集成配置文件中进行以下操作:

<includes>
   <exclude>**/unit/**/*.java</exclude>
   <include>**/integration/**/*.java</include>
</includes>

你可能需要调整包含/排除的内容,以确保完全正确,但这是一般想法。


好的,那行了。看起来如果你在排除模式中进行了指定,就不能在包含中使用配置文件进行覆盖。 - jdevelop
Maven中的覆盖仅在语法层面上起作用,这意味着您只能覆盖类似的元素。 - Dmitry B.
你的建议对于插件2.19.1不能起作用。 - fjjiaboming

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接