有没有办法将长时间运行(例如压力测试)分开,以便它们在Maven 2中默认不运行?

StackOverflow https://stackoverflow.com/questions/251730

我们在这里一直需要我无法弄清楚如何使用maven 2库存工具和文档来解决这个问题。

我们的一些开发人员有一些非常长时间运行的JUnit测试(通常是压力测试),在任何情况下都不应该作为构建过程/每晚构建的常规部分运行。

当然,我们可以使用surefire插件的排除机制,只是从构建中删除它们,但理想情况下我们会喜欢允许开发人员通过Maven 2随意运行它们的东西。

有帮助吗?

解决方案

通常,您会在maven配置中添加一个配置文件,该配置文件运行不同的测试集:

使用mvn -Pintegrationtest install

运行此命令
    <profile>
        <id>integrationtest</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <configuration>
                        <argLine>-client -Xmx896m -XX:MaxPermSize=192m</argLine>
                        <forkMode>once</forkMode>
                        <includes>
                            <include>**/**/*Test.java</include>
                            <include>**/**/*IntTest.java</include>
                        </includes>
                        <excludes>
                            <exclude>**/**/*SeleniumTest.java</exclude>
                        </excludes>
                    </configuration>
                </plugin>
            </plugins>
        </build>
        <activation>
            <property>
                <name>integrationtest</name>
            </property>
        </activation>
    </profile>

其他提示

添加 krosenvold 的答案,以确保没有意外行为,请确保您还有默认配置文件,默认情况下排除集成或压力测试你想要在你的特殊档案中运行。

<profile>
    <id>normal</id>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>**/**/*IntTest.java</exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
</profile>

您需要创建一个这样的配置文件,只需在配置文件之外列出surefire-plugin将覆盖该配置文件,如果选择它:

mvn -P integrationtest clean install

使用集成测试插件,例如超级有用的集成测试Thingy 来自单元测试的单独集成测试(长时间运行,系统测试)(纯粹主义者说所有真正的单元测试运行最多30秒)。为单元测试和集成测试制作两个Java包。

然后不要将此插件绑定到某个阶段(正常的maven生命周期),并且仅在显式调用它作为目标时运行它,如下所示: mvn shitty:clean shitty:install shitty:test

<plugins>
  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>shitty-maven-plugin</artifactId>
  </plugin>
</plugins>

这样,您的普通开发人员不会受到影响,并且您将能够按需运行集成测试。

另一个选择是让压力测试检测到它在maven中运行并且只运行一次或两次。即变成常规功能测试。这样你就可以检查代码是否仍然良好,但是长时间不运行。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top