Gradle 如何排除@SpringBootTest导致;未找到针对给定includes";的测试;?

Gradle 如何排除@SpringBootTest导致;未找到针对给定includes";的测试;?,gradle,intellij-idea,junit5,spring-boot-test,Gradle,Intellij Idea,Junit5,Spring Boot Test,我正在做一个SpringBoot测试,它没有启动任何测试用例,这显然是SpringBoot上下文被其他bean修改的副作用 最初,idea 2019.3/gradle 6.0.1/junit 5.5.2/springboot 2.2.4正确检测来自的测试用例,并正确执行 如果在上下文中加载了一些额外的bean,请参见中的,那么测试将异常失败,并显示以下消息,并且没有检测到测试用例 > Task :spring-cloud-app-broker-integration-tests:testC

我正在做一个SpringBoot测试,它没有启动任何测试用例,这显然是SpringBoot上下文被其他bean修改的副作用

最初,idea 2019.3/gradle 6.0.1/junit 5.5.2/springboot 2.2.4正确检测来自的测试用例,并正确执行

如果在上下文中加载了一些额外的bean,请参见中的,那么测试将异常失败,并显示以下消息,并且没有检测到测试用例

> Task :spring-cloud-app-broker-integration-tests:testClasses UP-TO-DATE
> Task :spring-cloud-app-broker-integration-tests:test FAILED
Test result: SUCCESS
Test summary: 0 tests, 0 succeeded, 0 failed, 0 skipped
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':spring-cloud-app-broker-integration-tests:test'.
> No tests found for given includes: [org.springframework.cloud.appbroker.integration.CreateServiceKeyBindingComponentTest](filter.includeTestsMatching)
在gradle/junit/springboot上下文中可以使用哪些故障排除步骤来修复此类意外的“未找到测试”症状?

这看起来与未提供诊断的类似

我尝试了以下方法,但运气不好

0-在重新启动intellij之前,intellij停止并检查没有gradle守护程序仍在运行

1-在gradle参数中指定
--debug
,以获取调试输出并没有提供有用的日志

2020-03-11T18:07:07.042+0100 [DEBUG] [TestEventLogger] Gradle Test Run :spring-cloud-app-broker-integration-tests:test STARTED
2020-03-11T18:07:07.052+0100 [QUIET] [system.out] 
2020-03-11T18:07:07.052+0100 [QUIET] [system.out] Test result: SUCCESS
2020-03-11T18:07:07.052+0100 [QUIET] [system.out] Test summary: 0 tests, 0 succeeded, 0 failed, 0 skipped
2020-03-11T18:07:07.052+0100 [QUIET] [system.out] 
2020-03-11T18:07:07.053+0100 [QUIET] [system.out] </event></ijLog>
2020-03-11T18:07:07.053+0100 [DEBUG] [TestEventLogger] 
2020-03-11T18:07:07.053+0100 [DEBUG] [TestEventLogger] Gradle Test Run :spring-cloud-app-broker-integration-tests:test PASSED
中考虑的其他诊断的完整列表以及相关的


编辑

“未找到测试…”错误在通过在spring上下文中添加/删除有问题的bean而始终可复制之后突然消失。我无法再复制它,也无法清楚地确定是什么在我的环境中修复了它:-(

以下是我运行的两个步骤之间的内容,即使它们看起来不相关,我也不会解释它们是如何影响/修复问题的:

0-springboot/junit/gradle的更新,其中intellij/gradle守护程序无法正确重新加载

1-将
--scan
选项传递给gradle构建(生成

构建扫描是一个可共享的、集中的构建记录,它提供了对发生了什么以及为什么发生的深入了解

2-打开intellij选项

3-通过点击gradle配置上的“Debug”,在Idea调试器中运行gradle构建

4-使用
/gradlew--stop



在顶级项目中运行
gradleclean
,最终为我解决了这个问题(一旦它再次复制)

进一步失败尝试的注意事项:

  • 子项目层面的
    gradle clean
    (本多模块项目)
  • 使用intellij runner而不是gradle runner执行测试
  • 使用
    /gradlew-stop

在顶级项目中运行一个
gradle clean
最终为我解决了这个问题(一旦它再次出现)

进一步失败尝试的注意事项:

  • 子项目层面的
    gradle clean
    (本多模块项目)
  • 使用intellij runner而不是gradle runner执行测试
  • 使用
    /gradlew-stop

找不到测试的一个常见原因是缺少测试运行程序或使用了错误的版本

如果您使用的是Gradle,则在
build.Gradle的
dependencies
块中必须有以下行之一:

  • 对于JUnit4:
    testRuntimeOnly('org.JUnit.vintage:junitVintage引擎')
  • 对于JUnit5:
    testRuntimeOnly('org.JUnit.jupiter:JUnit-jupiter-engine')
来源=


这不会直接回答问题,但可能有助于解决问题。

找不到测试的一个常见原因是缺少测试运行程序或使用了错误的版本

如果您使用的是Gradle,则在
build.Gradle的
dependencies
块中必须有以下行之一:

  • 对于JUnit4:
    testRuntimeOnly('org.JUnit.vintage:junitVintage引擎')
  • 对于JUnit5:
    testRuntimeOnly('org.JUnit.jupiter:JUnit-jupiter-engine')
来源=

这不会直接回答问题,但可能有助于解决问题

java ... com.intellij.rt.execution.application.AppMainV2 com.intellij.rt.junit.JUnitStarter -ideVersion5 -junit5 org.springframework.cloud.appbroker.integration.CreateServiceKeyBindingComponentTest
##teamcity[enteredTheMatrix]
##teamcity[treeEnded]