java - 使用 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
但没有任何区别。
是否有一些配置允许在使用不同的引擎时选择单个测试?
解决方案
Gradle 尚不支持发现或过滤非基于类的测试(参见:gradle/#4773)。相反,Gradle 要求 JUnit 平台在测试包中的所有类中发现测试。@Cucumber
注释是一种发现注释类包中所有特征文件的变通方法。
使用时,--tests cucumber.junit5.gradle.SampleSteps
您对所有测试结果应用基于类的过滤器。因为带@Cucumber
注释的类是一种解决方法,所以它不是已发现测试的一部分,并且因为特性文件没有ClassSource
,而是FileSource
gradle 将它们全部排除在外。
您目前可以做的最好的事情是使用 gradle/#4773 中建议的解决方法。您可能还想请求 Gradle 团队提供与 JUnit 平台的更好集成,以便可以使用其所有功能。