我希望能够使用 gradle test 执行ExtendedCucumber类,而不是定义一个调用 cucumber.api.cli.Main 类的单独黄瓜任务 .

我有以下ExtendedCucumber测试运行器:

import com.github.mkolisnyk.cucumber.runner.ExtendedCucumber 
import com.github.mkolisnyk.cucumber.runner.ExtendedCucumberOptions
import cucumber.api.CucumberOptions
import org.junit.runner.RunWith

@RunWith(ExtendedCucumber::class)
@ExtendedCucumberOptions(jsonReport = "build/test-results/cucumber/cucumber-
report.json",
    retryCount = 3,
    detailedReport = true,
    detailedAggregatedReport = true,
    overviewReport = true,
    //coverageReport = true,
    jsonUsageReport = "build/test-results/cucumber/cucumber-report.json",
    usageReport = false,
    toPDF = true,
    excludeCoverageTags = ["@flaky"],
    includeCoverageTags = ["@passed"],
    outputFolder = "build/test-results/cucumber")
@CucumberOptions(
    plugin = ["pretty:build/test-results/cucumber/cucumber-pretty.txt", "html:build/test-results/cucumber/cucumber-html-report",
        "json:build/test-results/cucumber/cucumber-report.json", "usage:build/test-results/cucumber/cucumber-usage.json",
        "junit:build/test-results/cucumber/cucumber-results.xml"],
    glue = ["io.biomex.spog.steps"],
    features = ["classpath:features"])
class RunCukesJunitTest

从我的IDE按预期执行,创建扩展报告 . 并且gradle中的以下Junit5配置:

junitPlatform {
    platformVersion '1.0.2'
    reportsDir file('build/test-results/junit-platform') // this is the default
    filters {
        engines {
            include 'junit-jupiter'
            // exclude 'custom-engine'
        }
        tags {
            // include 'fast'
            //exclude 'slow'
        }
        selectors {
            file 'RunCukesJunitTest'
        }
        //includeClassNamePattern '^.*Test?'
        //excludeClassNamePattern '^.*Jpa?'
    }
    // enableStandardTestTask true
    // reportsDir file('build/test-results/junit-platform') // this is the default
    //logManager 'org.apache.logging.log4j.jul.LogManager'
}

哪种方法能够很好地发现和执行普通的Junit测试 . 如您所见,我已将Junit5配置为仅执行RunCukesJunitTest . 构建正常运行,检测测试,但不会运行任何测试以下输出:

Test run finished after 47 ms
[         1 containers found      ]
[         0 containers skipped    ]
[         1 containers started    ]
[         0 containers aborted    ]
[         1 containers successful ]
[         0 containers failed     ]
[         0 tests found           ]
[         0 tests skipped         ]
[         0 tests started         ]
[         0 tests aborted         ]
[         0 tests successful      ]
[         0 tests failed          ]



BUILD SUCCESSFUL in 13s
6 actionable tasks: 6 executed

我可以使用自定义gradle任务运行普通的Cucumber测试:

task cucumber() {
    dependsOn assemble, compileTestJava
    doLast {
        javaexec {
            main = "cucumber.api.cli.Main"
            classpath = configurations.cucumberRuntime + sourceSets.main.output + sourceSets.test.output
            args = ['--plugin', 'html:build/test-results/cucumber/cucumber-html-report',
                '--plugin', 'json:build/test-results/cucumber/cucumber-report.json',
                '--plugin', 'pretty:build/test-results/cucumber/cucumber-pretty.txt', '--glue', 'io.biomex.spog.steps', 'src/test/resources/features/api']
        }
    }
}

我想我可以改变上面的任务来执行ExtendedCucumber任务 . 但是,理想情况下我想要所有Junit测试,包括在运行命令 gradle testgradle junitPlatformTest 时执行黄瓜测试 .