gpt4 book ai didi

java - 如何使用 Maven 运行两组测试,中间有延迟

转载 作者:行者123 更新时间:2023-11-30 02:50:06 25 4
gpt4 key购买 nike

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

我们的计划是:

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

我们希望保持启用和禁用情况的测试分离,因此 sleep 必须在 Maven 本身中引入,或者作为某些插件类型的解决方案引入。

问题:如何指定 Maven 运行测试目标的顺序,并在其间添加参数化延迟,并将其馈送到 Selenium?

最佳答案

您可以应用以下配置:

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

在同一阶段使用相同的插件并执行多次将确保您获得 declaration order will be followed在 Maven 执行期间。

下面是上述方法的示例片段:

<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 profile 中为了干净起见,因为您可能不希望此行为作为默认构建的一部分,而仅按需执行(或作为 CI 作业的一部分)。

如果您需要配置 hibernate 时间,则可以通过 systemPropertyVariables 配置每个执行的相关配置部分。选项。

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

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

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

<小时/>

另请注意,maven-failsafe-plugin 可能更适合您的场景,因为它可以更好地处理集成/验收测试的执行后,如其 official page 中所述。 ,即使您的用例可能仍然由“maven-surefire-plugin”提供服务。

关于java - 如何使用 Maven 运行两组测试,中间有延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38978372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com