当前位置: 首页 > 知识库问答 >
问题:

Cucumber-Jvm重试失败场景

马丰
2023-03-14

我想自动重试失败的测试,以提高测试的可靠性,类似于 Junit 中的 TestRule,我希望能够灵活地在测试周围插入逻辑,以便实现重试循环:

>

  • 我正在使用Cucumber-JVM,需要一个涉及Java或Gradle的解决方案

    我通过Gradle javaexec尝试了以下cucumber选项:

    //--format pretty--format rerun--out tmp/rerun.txt

    //--格式化重新运行--out C:\Desktop\failed.txt

    目前我正在尝试通过RunCukesTest.java.

    import cucumber.api.CucumberOptions;
    import cucumber.api.junit.Cucumber;
    import org.junit.runner.RunWith;
    
    
    /**
     *  String         dotcucumber 
        boolean dryRun 
        String[]    features 
        String[]    format 
        String[]    glue 
        boolean monochrome 
        String[]    name
        Specify a patternfilter for features or scenarios
        SnippetType snippets 
        boolean strict 
        String[]    tags 
     * 
     */
    
    
    @RunWith(Cucumber.class)
    @CucumberOptions(monochrome = true)
    public class RunCukesTest {
    }
    
  • 共有1个答案

    万俟靖
    2023-03-14

    把德维斯·苏莱曼的答案从问题中抽出来:

    环顾四周,尝试了一些东西后,我最终决定快速而肮脏地解决问题。以下是我的解决方案:

    task cucumber() {
    dependsOn assemble, compileTestJava
    doLast {
        javaexec {
            main = "cucumber.api.cli.Main"
            classpath = configurations.cucumberRuntime + sourceSets.main.output + sourceSets.test.output
            args = ['-f', 'rerun:rerun.txt','--glue', 'org.test.cucumber', 'src/test/resources']
        }
    }
    }
    
    task cucumberRerun() {
    dependsOn assemble, compileTestJava
    doLast {
        def file1 = new File('rerun.txt')
        for (int i=0;i<file1.getText().split(" ").length;i++) {
            println file1.getText().split(" ")[i]
            try {
                javaexec {
                    main = "cucumber.api.cli.Main"
                    classpath = configurations.cucumberRuntime + sourceSets.main.output + sourceSets.test.output
                    args = ['-f','html:target'+i,'--glue', 'org.test.cucumber', 'src/test/resources/'+file1.getText().split(" ")[i]]
                }
            } catch (Exception e) {
    
            }
        }
    }
    }
    
    cucumber.finalizedBy cucumberRerun
    
     类似资料:
    • 我不确定如何在cucumber-JVM中实现它。有线索吗?

    • 我有一个示例项目,其中使用了Maven、TestNg和Cucumber。我使用testrunner类运行测试。 我创建了一个包含两个方案的功能文件,但两个方案都失败了。我有两个具有不同功能文件的测试运行者类 - 1。特征文件指向所有功能,2。指向仅失败的方案。 当我尝试重新运行场景时,它只运行一个场景。 1- 请告知如何执行所有失败的方案。

    • 我正在使用 jvm cucumber并行插件,并希望重新运行我失败的测试用例。需要在 文件中进行哪些更改。

    • 我在selenium firefox webdriver上运行了Cumber JVM测试。在eclipse上运行测试时一切都很正常,但当它们在Jenkins上运行时,浏览器上的url设置正确,但页面永远不会加载。Jenkins安装在windows机器上(不是无头)。可能很简单,但我似乎在网上找不到任何能给我指明正确方向的东西。 这篇文章(詹金斯与Xvfb和硒 - 火狐开始但什么都没有执行)指向硒更

    • 我正试图在Maven中基于cucumber标记运行一套JUnitCucumber特性。我可以让它们按顺序运行,但不能并行运行。我找到了一个名为小胡瓜的软件包,它可以帮我解决这个问题。 然而,我无法让测试运行,我看了github上的示例maven项目,它在Cucumber.class运行良好,但在西葫芦上抛出一个错误。 任何帮助将不胜感激。 我已在pom中包括以下内容 我是在召唤我的跑步者。 我得到

    • 我在cucumber和Gradle和TestNG一起用硒。同一场景对多个参数(示例)运行。我面临的问题是,对于第一次断言成功,浏览器(驱动程序)关闭。但是对于随后的断言失败,浏览器(驱动程序)不会关闭,而是为下一组值启动一个新的浏览器实例。 请建议如何克服这个问题。我有没有办法在这里使用@beforeTest@afterTest?