代码之家  ›  专栏  ›  技术社区  ›  feoh

有没有办法将长时间运行(如压力测试)分离出来,这样在Maven2中就不会默认运行?

  •  8
  • feoh  · 技术社区  · 16 年前

    我们在这里有一个持续的需求,我不知道如何使用stock maven 2工具和文档来解决这个问题。

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

    当然,我们可以使用Surefire插件的排除机制,将它们从构建中抛出,但理想情况下,我们希望开发人员能够通过Maven2随意运行它们。

    4 回复  |  直到 13 年前
        1
  •  11
  •   krosenvold    16 年前

    通常,您会向运行不同测试集的Maven配置添加一个配置文件:

    使用MVN-PintegrationTest安装运行此程序

        <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>
    
        2
  •  4
  •   Joel Westberg    13 年前

    添加到 克罗森沃尔德 的答案是,为了确保没有意外行为,请确保您还具有默认活动的默认配置文件, 排除 您希望在特殊配置文件中运行的集成测试或压力测试。

    <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插件,它就会覆盖配置文件,如果选择了:

    mvn -P integrationtest clean install
    
        3
  •  1
  •   Matthew McCullough    15 年前

    使用集成测试插件,如 Super Helpful Integration Test 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>
    

    这样,您的普通开发人员就不会受到影响,并且您可以根据需要运行集成测试。

        4
  •  0
  •   Peter Lawrey    15 年前

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