Cucumber-Jvm重试失败的场景

时间:2014-05-15 10:05:30

标签: java cucumber cucumber-jvm

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

  • 我正在使用 Cucumber-JVM ,需要一个涉及 Java Gradle

  • 的解决方案
  • 我通过Gradle javaexec尝试了以下黄瓜选项:

    // - 格式漂亮 - 格式重新运行--out tmp / rerun.txt

    // - 格式重新运行 - 输出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 个答案:

答案 0 :(得分:0)

拉丁德维斯苏莱曼的答案是不可能的:

在环顾四周并尝试了一些事情之后,我终于找到了一个快速而肮脏的修复方法。这是我的解决方案:

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
相关问题