我们的目标是对系统进行验收测试,该系统可以在指定的时间段内禁用,并确保系统被禁用并恢复启用。
我们的计划是:
我们希望将启用和禁用案例的测试保持解耦,因此必须在maven本身或某些插件类型解决方案中引入睡眠。
问题:如何指定maven运行测试目标的顺序,并在其间添加参数化延迟,这将被提供给Selenium?
答案 0 :(得分:2)
您可以应用以下配置:
maven-surefire-plugin
或maven-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'。