首页 > 解决方案 > 什么时候需要在 `@SpringBootTest` 注解中提及应用程序类?

问题描述

所以如果我没有在测试类注释中提到应用程序测试,我的测试类就找不到bean

@RunWith(SpringJUnit4ClassRunner::class)
@SpringBootTest(classes=[MySpringApplication::class])
@WebAppConfiguration
class MyFooIT{...}

我已经看到(并编写了)其他测试(在其他项目中以及在此),我不需要明确提及该类。

我不确定为什么会发生这种情况,我怀疑不知道可能会导致我以后遇到问题。

什么时候需要为类提供@SpringBootTest注释,什么时候不需要?

标签: javaspringspring-bootkotlinjunit

解决方案


在两种情况下,您可能必须在 中指定要使用的应用程序类@SpringBootTest

  1. 当您的测试类不在应用程序类的根包中时(有关结构的更多详细信息,请参见此处
  2. 当您的主应用程序包下有多个应用程序类时。这通常发生在您使用相同包具有依赖项时(模块 Acom.example用作根包,模块 B 依赖于模块 A 并com.example用作根包)

您可以检查您MyFooIT是否在根包的层次结构下(包含MySpringApplication),或者您是否在同一个根包下有多个应用程序类。


推荐阅读