使用 Cucumber JUnit5 引擎选择单个测试失败
Selecting a single test with Cucumber JUnit5 engine fails
考虑这个简单的项目:https://github.com/ekalin/cucumber-junit5-gradle。它包含 Cucumber 功能,使用 JUnit5。
按照 https://github.com/cucumber/cucumber-jvm/tree/master/junit-platform-engine 的说明,我创建了一个带有 @Cucumber
注释的 class,以便可以发现测试。当我 运行 ./gradlew test
时,该功能被发现并且 运行.
但是如果我尝试 select 仅使用 ./gradlew test --tests cucumber.junit5.gradle.SampleSteps
进行测试(或使用其他方式进行 select 测试),我会收到此错误:
Execution failed for task ':test'.
> No tests found for given includes: [cucumber.junit5.gradle.SampleSteps](--tests filter)
我试过将 includeEngines("cucumber")
添加到 useJUnitPlatform
,但没有任何区别。
是否有一些配置允许 select 在使用不同的引擎时进行单个测试?
Gradle 尚不支持发现或过滤基于非 class 的测试(参见:gradle/#4773)。相反 Gradle 要求 JUnit 平台发现测试包中所有 classes 中的测试。 @Cucumber
注释是一种解决方法,用于发现带注释的 class 包中的所有功能文件。
当您使用 --tests cucumber.junit5.gradle.SampleSteps
时,您将对所有测试结果应用基于 class 的过滤器。因为 @Cucumber
注释的 class 是一个变通方法,它不是已发现测试的一部分,并且因为功能文件没有 ClassSource
而是 FileSource
gradle 将全部排除。
您目前可以做的最好的事情是使用 gradle/#4773 中建议的解决方法。您可能还想请求 Gradle 团队提供与 JUnit 平台的更好集成,以便可以使用其所有功能。
考虑这个简单的项目:https://github.com/ekalin/cucumber-junit5-gradle。它包含 Cucumber 功能,使用 JUnit5。
按照 https://github.com/cucumber/cucumber-jvm/tree/master/junit-platform-engine 的说明,我创建了一个带有 @Cucumber
注释的 class,以便可以发现测试。当我 运行 ./gradlew test
时,该功能被发现并且 运行.
但是如果我尝试 select 仅使用 ./gradlew test --tests cucumber.junit5.gradle.SampleSteps
进行测试(或使用其他方式进行 select 测试),我会收到此错误:
Execution failed for task ':test'.
> No tests found for given includes: [cucumber.junit5.gradle.SampleSteps](--tests filter)
我试过将 includeEngines("cucumber")
添加到 useJUnitPlatform
,但没有任何区别。
是否有一些配置允许 select 在使用不同的引擎时进行单个测试?
Gradle 尚不支持发现或过滤基于非 class 的测试(参见:gradle/#4773)。相反 Gradle 要求 JUnit 平台发现测试包中所有 classes 中的测试。 @Cucumber
注释是一种解决方法,用于发现带注释的 class 包中的所有功能文件。
当您使用 --tests cucumber.junit5.gradle.SampleSteps
时,您将对所有测试结果应用基于 class 的过滤器。因为 @Cucumber
注释的 class 是一个变通方法,它不是已发现测试的一部分,并且因为功能文件没有 ClassSource
而是 FileSource
gradle 将全部排除。
您目前可以做的最好的事情是使用 gradle/#4773 中建议的解决方法。您可能还想请求 Gradle 团队提供与 JUnit 平台的更好集成,以便可以使用其所有功能。