为了账号安全,请及时绑定邮箱和手机立即绑定

如何暂存大量数据,等待,然后在 Cucumber 中运行测试?

如何暂存大量数据,等待,然后在 Cucumber 中运行测试?

泛舟湖上清波郎朗 2021-09-26 16:41:32
我们有来自资产的消息,这些消息必须经过长达 1 分钟的处理,然后数据才能到达可以测试的地方。我们有 1200 次测试,所以您可以想象需要多长时间。目前我们正在使用 JUnit 4 并在运行器中使用“@BeforeClass”方法来查找所有带有注释“@Stager”的方法并运行它们。然后我们等待,然后我们运行测试。效果很好(到目前为止)。我们想使用 Cucumber,但是,我们需要它来:阶段数据。等待 1 或 2 分钟运行测试。有没有办法先运行所有“给定”方法,暂停 1 分钟,然后运行测试?我们已经在 Surefire 中尝试了并行线程,但它似乎有问题,我们有 1200 次测试。坦率地说,这有太多的事情要做。我们真的不需要并行运行。暂存数据运行速度快,测试运行速度快。每次测试之间的停顿都是表演的障碍。我们会考虑扩展 Cucumber。也许:@RunWith(CucumberStage.class)有什么东西可以做到这一点吗?有什么建议吗?
查看完整描述

2 回答

?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

假设您正在使用 maven 来运行测试。


如果您打算使用 junit runner of Cucumber,您可以继续使用现有逻辑来设置BeforeClassrunner 中的数据。如果你有一个跑步者会更容易,否则你需要在插件中设置执行顺序。关于跳过 Given 方法,您可以向 中添加一个属性surefire or failsafe plugin并在 Given 方法中使用它。


<plugin>

        <groupId>org.apache.maven.plugins</groupId>

        <artifactId>maven-surefire-plugin</artifactId>

        <version>2.22.0</version>

        <configuration>                 

            <systemProperties>

                <property>

                    <name>skipproperty</name>

                    <value>myvaluetest</value>

                </property>

            </systemProperties>

        </configuration>

</plugin>

在 Given 方法中,您可以使用此属性作为跳过该步骤的标志。虽然它是一个黑客,因为它被复制到所有设置方法。但是这样你仍然可以将逻辑保留在给定的方法中。而且,如果您删除 POM 中的属性,Cucumber 将按照正常方式进行设置。


if(System.getProperty("skipproperty")!=null)

    return;

但是,如果您还想尝试使用 TestNg,则可以使用 mavenexec plugin来运行设置代码。这将使其独立于测试框架。设置与上面相同,只是在 POM 中添加了 exec 插件。


<plugin>

    <groupId>org.codehaus.mojo</groupId>

    <artifactId>exec-maven-plugin</artifactId>

    <version>1.6.0</version>

    <executions>

        <execution>

            <id>my-execution</id>

            <phase>process-test-classes</phase>

               <goals>

                    <goal>java</goal>

                </goals>

        </execution>

    </executions>

    <configuration>

            <mainClass>runner.ExecuteSetup</mainClass>

            <classpathScope>test</classpathScope>

    </configuration>

</plugin>

ExecuteSetup main()方法将包含调用设置代码的现有逻辑。确保你添加classpathscope否则你会得到一个奇怪的classnotfoundexception.


查看完整回答
反对 回复 2021-09-26
?
当年话下

TA贡献1890条经验 获得超9个赞

我认为您不能只在 Cucumber 中运行所有给定的步骤,然后运行其余的步骤。Cucumber 将一一运行所有步骤。


查看完整回答
反对 回复 2021-09-26
  • 2 回答
  • 0 关注
  • 197 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信