Tag: cucumber jvm

在步骤定义文件之间共享相同的selenium WebDriver

现在我们正在努力采用Cucumber在我们的Java8 / Spring应用程序上运行function测试。 我们希望我们的步骤定义文件尽可能保持DRY,因此计划在不同的function文件中使用相同的步骤定义。 由于我们使用selenium WebDriver来驱动我们的测试,我们需要在步骤定义之间共享相同的驱动程序。 为了说明为什么有多个驱动程序对我们来说是一个问题,想象一个function文件定义了两个步骤:一个用于导航到一个页面,另一个用于声明该页面上出现一条线。 如果两个步骤碰巧在单独的文件中定义,则第一步定义将使用其驱动程序导航到该页面。 到第二步定义运行针对其驱动程序的断言时,它还没有导航到页面(因为这些操作转到另一个驱动程序)并且测试失败。 我们尝试实现每个步骤定义文件将扩展的基类(包含驱动程序)。 事实certificate,Cucumber实例化了每个步骤定义类的实例,因此我们最终得到了具有不同WebDriver实例的每个步骤定义。 我们考虑过使用Spring在每个步骤定义文件中注入一个WebDriver实例,但我相信这会导致上述相同的问题。 我知道单身模式可以用来实现这一目标,但是我们的模式看起来像是一个常见的问题而且单身模式感觉有些过分。 这实际上是接近它的正确方法吗? 或者我错过了一些非常明显的东西? 预先感谢您的帮助!

使用cucumber-jvm重新尝试失败的黄瓜测试

我有一个Cucumber-JVM,JUnit,Selenium设置。 我通过在Eclipse中使用JUnit运行RunSmokeTests.java来启动运行。 我还设置了一个maven配置文件来从命令行运行测试,将来可能还有Jenkins。 当测试运行时,其中一些可能会失败,主要是由于应用程序花费的时间超过预期。 然后我必须重新运行这些场景。 目前我通过手动将@rerun标记附加到失败的标记然后运行RunReruns.java来运行RunReruns.java ,这类似于RunSmokeTest.java但使用@rerun标记。 随着自动化测试数量的增加,标记测试并开始运行并清除标签非常耗时。 有没有使用Cucumber-JVM重新运行失败测试的自动化方法? RunSmokeTests.java package testGlueClasses; import cucumber.api.junit.Cucumber; import org.junit.runner.RunWith; @RunWith(Cucumber.class) @Cucumber.Options(features = “src/test/java”, strict = true, format = { “html:target/CucumberReport”, “json:target/JSON/Cucumber.json”, “FrameworkCore.CustomTestReporter” }, tags = { “@SmokeTest” }, glue = { “FrameworkCore”, “MyApp.Utils”, “MyApp.StepDefinitions” }) public class RunSmokeTests { } Maven片段: smoke **/RunSmokeTests.java