猿问

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

我们有来自资产的消息,这些消息必须经过长达 1 分钟的处理,然后数据才能到达可以测试的地方。我们有 1200 次测试,所以您可以想象需要多长时间。

目前我们正在使用 JUnit 4 并在运行器中使用“@BeforeClass”方法来查找所有带有注释“@Stager”的方法并运行它们。然后我们等待,然后我们运行测试。效果很好(到目前为止)。

我们想使用 Cucumber,但是,我们需要它来:

  1. 阶段数据。

  2. 等待 1 或 2 分钟

  3. 运行测试。

有没有办法先运行所有“给定”方法,暂停 1 分钟,然后运行测试?

我们已经在 Surefire 中尝试了并行线程,但它似乎有问题,我们有 1200 次测试。坦率地说,这有太多的事情要做。我们真的不需要并行运行。暂存数据运行速度快,测试运行速度快。每次测试之间的停顿都是表演的障碍。

我们会考虑扩展 Cucumber。也许:

@RunWith(CucumberStage.class)

有什么东西可以做到这一点吗?有什么建议吗?


泛舟湖上清波郎朗
浏览 198回答 2
2回答

慕田峪7331174

假设您正在使用 maven 来运行测试。如果您打算使用 junit runner of Cucumber,您可以继续使用现有逻辑来设置BeforeClassrunner 中的数据。如果你有一个跑步者会更容易,否则你需要在插件中设置执行顺序。关于跳过 Given 方法,您可以向 中添加一个属性surefire or failsafe plugin并在 Given 方法中使用它。<plugin>&nbsp; &nbsp; &nbsp; &nbsp; <groupId>org.apache.maven.plugins</groupId>&nbsp; &nbsp; &nbsp; &nbsp; <artifactId>maven-surefire-plugin</artifactId>&nbsp; &nbsp; &nbsp; &nbsp; <version>2.22.0</version>&nbsp; &nbsp; &nbsp; &nbsp; <configuration>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <systemProperties>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <property>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <name>skipproperty</name>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <value>myvaluetest</value>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </property>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </systemProperties>&nbsp; &nbsp; &nbsp; &nbsp; </configuration></plugin>在 Given 方法中,您可以使用此属性作为跳过该步骤的标志。虽然它是一个黑客,因为它被复制到所有设置方法。但是这样你仍然可以将逻辑保留在给定的方法中。而且,如果您删除 POM 中的属性,Cucumber 将按照正常方式进行设置。if(System.getProperty("skipproperty")!=null)&nbsp; &nbsp; return;但是,如果您还想尝试使用 TestNg,则可以使用 mavenexec plugin来运行设置代码。这将使其独立于测试框架。设置与上面相同,只是在 POM 中添加了 exec 插件。<plugin>&nbsp; &nbsp; <groupId>org.codehaus.mojo</groupId>&nbsp; &nbsp; <artifactId>exec-maven-plugin</artifactId>&nbsp; &nbsp; <version>1.6.0</version>&nbsp; &nbsp; <executions>&nbsp; &nbsp; &nbsp; &nbsp; <execution>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <id>my-execution</id>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <phase>process-test-classes</phase>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<goals>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <goal>java</goal>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </goals>&nbsp; &nbsp; &nbsp; &nbsp; </execution>&nbsp; &nbsp; </executions>&nbsp; &nbsp; <configuration>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <mainClass>runner.ExecuteSetup</mainClass>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <classpathScope>test</classpathScope>&nbsp; &nbsp; </configuration></plugin>ExecuteSetup main()方法将包含调用设置代码的现有逻辑。确保你添加classpathscope否则你会得到一个奇怪的classnotfoundexception.

当年话下

我认为您不能只在 Cucumber 中运行所有给定的步骤,然后运行其余的步骤。Cucumber 将一一运行所有步骤。
随时随地看视频慕课网APP

相关分类

Python
我要回答