[英]How can I stage a LOT of data, wait, and then run tests in Cucumber?
我们有来自资产的消息,并且这些消息必须经过最多1分钟的过程,然后数据才能被测试到。 我们有1200个测试,因此您可以想象需要多长时间。
当前,我们正在使用JUnit 4,并在运行程序中使用“ @BeforeClass”方法来查找带有注释“ @Stager”的所有方法并运行它们。 然后我们等待,然后运行测试。 效果很好(到目前为止)。
我们想使用黄瓜,但是,我们需要它来:
有没有一种方法可以先运行所有“给定”方法,暂停1分钟,然后运行测试?
我们已经在Surefire中尝试了并行线程,但是似乎有问题,我们有1200个测试。 坦白说,有太多事情要做。 我们真的不需要并行运行。 分阶段的数据运行很快,测试运行很快。 这是每个测试之间的停顿,它是显示停止。
我们将考虑扩展黄瓜。 也许:
@RunWith(CucumberStage.class)
那里有什么可以做的吗? 有什么建议吗?
假设您正在使用maven运行测试。
如果您打算使用黄瓜的junit运行器,则可以继续使用现有逻辑在运行器的BeforeClass
中设置数据。 如果您有一个跑步者,则更容易,您将需要在插件中设置执行顺序。 关于跳过给定方法,您可以将属性添加到surefire or failsafe plugin
并在给定方法中使用它。
<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中的属性,黄瓜将以常规方式进行设置。
if(System.getProperty("skipproperty")!=null)
return;
但是,如果您也想尝试使用TestNg,则可以使用maven exec 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
。
我认为您只能在Cucumber中运行“所有给定”步骤,然后再运行其余步骤。 黄瓜将一步一步地执行所有步骤。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.