如何使用maven运行两组测试,延迟介于两者之间

时间:2016-08-16 15:03:31

标签: java maven selenium continuous-integration maven-surefire-plugin

我们的目标是对系统进行验收测试,该系统可以在指定的时间段内禁用,并确保系统被禁用并恢复启用。

我们的计划是:

  • 首先使用Selenium
  • 从维护客户端禁用系统X分钟
  • 然后运行基于Java(或其他)的测试来查询系统,并声明系统已禁用
  • 然后我们应该睡X分钟并运行另一个测试以确保系统再次启用。

我们希望将启用和禁用案例的测试保持解耦,因此必须在maven本身或某些插件类型解决方案中引入睡眠。

问题:如何指定maven运行测试目标的顺序,并在其间添加参数化延迟,这将被提供给Selenium?

1 个答案:

答案 0 :(得分:2)

您可以应用以下配置:

  • 配置maven-surefire-pluginmaven-failsafe-plugin(更适合集成测试,在本用例中听起来更合适),通过include/exclude mechanism执行第一组测试,作为第一次执行这个插件
  • 配置maven-surefire-plugin(或maven-failsafe-plugin)以执行一个示例测试用例,其唯一目的是sleep一段确定的(或可配置的)时间,再次通过{{3 ,作为此插件的第二次执行(Maven将按照pom.xml文件声明尊重执行顺序)
  • 配置maven-surefire-plugin(或maven-failsafe-plugin)以再次通过include/exclude mechanism执行第二组测试(或在此用例中的单个检查测试),作为第三次执行(然后将作为最后一个执行)。

在同一阶段使用相同的插件和多次执行将确保在Maven执行期间include/exclude

以下方法的示例摘要:

<profile>
    <id>check-test</id>
    <build>
        <properties>
           <sleep.time>2000</sleep.time>
        </properties>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.19.1</version>
                <executions>
                    <execution>
                        <id>first-execution</id>
                        <phase>test</phase>
                        <configuration>
                            <includes>
                                <include>*FirstTestsSample.java</include>
                            </includes>
                        </configuration>
                    </execution>
                    <execution>
                        <id>second-execution</id>
                        <phase>test</phase>
                        <configuration>
                            <includes>
                                <include>SleepTest.java</include>
                            </includes>
                            <systemPropertyVariables>
                               <sleepParam>${sleep.time}</sleepParam>
                            </systemPropertyVariables>
                        </configuration>
                    </execution>
                    <execution>
                        <id>third-execution</id>
                        <phase>test</phase>
                        <configuration>
                            <includes>
                                <include>CheckTest.java</include>
                            </includes>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</profile>

注意,我将所有内容都包装在Maven declaration order will be followed中以保持清洁,因为您可能不希望将此行为作为默认构建的一部分,而只是按需执行(或作为CI作业的一部分)。

如果您需要配置休眠时间,则可以通过profile选项配置每个configuration的相关execution部分。

然后您可以按如下方式调用您的构建:

mvn clean verify -Pcheck-test -Dsleep.time=3000

-P通过其id启用配置文件,并且我们也通过命令行覆盖sleep.time属性的默认值,然后作为sleepParam系统变量的值传递可以通过System.gerProperty("sleepParam")调用从Java代码中获取。

另请注意,maven-failsafe-plugin可能更适合您的场景,因为它更好地处理集成/验收测试的执行后,如systemPropertyVariables中所述,即使您的用例仍可能已提供通过`maven-surefire-plugin'。