【问题标题】:Selecting a single test with Cucumber JUnit5 engine fails使用 Cucumber JUnit5 引擎选择单个测试失败
【发布时间】:2020-02-23 10:38:26
【问题描述】:

考虑这个简单的项目:https://github.com/ekalin/cucumber-junit5-gradle。它包含一个 Cucumber 功能,使用 JUnit5。

按照https://github.com/cucumber/cucumber-jvm/tree/master/junit-platform-engine 的说明,我创建了一个带有@Cucumber 注释的类,以便可以发现测试。当我运行./gradlew test 时,该功能被发现并运行。

但如果我尝试使用./gradlew test --tests cucumber.junit5.gradle.SampleSteps(或使用其他选择测试的方式)仅选择该测试,我会收到此错误:

Execution failed for task ':test'.
> No tests found for given includes: [cucumber.junit5.gradle.SampleSteps](--tests filter)

我尝试将includeEngines("cucumber") 添加到useJUnitPlatform,但没有任何区别。

是否有一些配置允许在使用不同引擎时选择单个测试?

【问题讨论】:

    标签: java gradle cucumber junit5 cucumber-junit


    【解决方案1】:

    Gradle 尚不支持发现或过滤非基于类的测试(请参阅:gradle/#4773)。相反,Gradle 要求 JUnit 平台在测试包中的所有类中发现测试。 @Cucumber 注释是一种解决方法,用于发现注释类的包中的所有功能文件。

    当您使用--tests cucumber.junit5.gradle.SampleSteps 时,您将对所有测试结果应用基于类的过滤器。因为 @Cucumber 带注释的类是一种解决方法,所以它不是已发现测试的一部分,并且因为功能文件没有 ClassSource 而是 FileSource gradle 会将它们全部排除。

    您目前可以做的最好的事情是使用 gradle/#4773 中建议的解决方法。您可能还想请求 Gradle 团队提供与 JUnit 平台的更好集成,以便可以使用其所有功能。

    【讨论】:

    • 我想避免这个解决方案,希望将来会有更好的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-10
    • 2018-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多