首页 > 解决方案 > 使用 Cucumber JUnit5 引擎选择单个测试失败

问题描述

考虑这个简单的项目: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但没有任何区别。

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

标签: javagradlecucumberjunit5cucumber-junit

解决方案


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

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

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


推荐阅读