gradle 重新运行runnerclass在 cucumber 中的原始runner类之前运行

piztneat  于 2023-01-13  发布在  其他
关注(0)|答案(1)|浏览(110)
CucumberSerenityBDDAPIAutoRunner
CucumberSerenityBDDUIAutoRunner
CucumberSerenityBDDUIReRunner

我的runner类是否位于一个文件夹中。我选择了按字母顺序递增的顺序在最后运行rerunner类。
x一个一个一个一个x一个一个二个x
这是我的两个同生跑步班。
我从Gradle运行中收到的错误如下所示,因为重新运行程序在原始运行程序之前运行:

com.xxxx.xxxx.xxxx.features.CucumberSerenityBDDUIReRunner > initializationError FAILED
    io.cucumber.core.exception.CucumberException: Failed to parse ‘target/failedrerun.txt’

如何选择正确的顺序?

qvsjd97n

qvsjd97n1#

作为一种解决方案,我创建了一个单独的gradle任务来在最后运行rerunner类,并从源代码中删除了CucumberSerenityBDDUIReRunner类。

configurations {
    cucumberRuntime {
        extendsFrom implementation
    }
}

task reRun(type: JavaExec, dependsOn:testClasses) {
            systemProperties System.getProperties()
            systemProperty "cucumber.options", System.getProperty("cucumber.options")

            mainClass = "net.serenitybdd.cucumber.cli.Main"
            classpath = configurations.cucumberRuntime + sourceSets.main.output + sourceSets.test.output
            args += [
                    '--plugin', 'pretty',
                    '@target/failedrerun.txt',
                    '--glue', 'com.abc.def.ijk.features']
}

现在我从命令行运行gradle --info clean test reRun aggregate -Denvironment='stagging' -Dtags='envr:stagging' -Dcucumber.options='--tags @envr=stagging'
这一次

CucumberSerenityBDDAPIAutoRunner 
and 
CucumberSerenityBDDUIAutoRunner

类作为***test***任务的一部分,重新运行将运行@target/failedrerun.txt文件中生成的失败测试用例链接。
Serenity报告仅考虑最新运行的测试用例(***即***如果作为重新运行任务的一部分运行,则重新运行)

***P.S:***我们可以将reRun任务放在***build.gradle***文件中

tasks.test {
    finalizedBy reRun
}

那么旧的gradle --info clean test aggregate -Denvironment='stagging' -Dtags='envr:stagging' -Dcucumber.options='--tags @envr=stagging'命令也将起作用。

相关问题