Can';无法从JUnit测试文件中找到@SpringBootApplication

Can';无法从JUnit测试文件中找到@SpringBootApplication,spring,spring-boot,junit,Spring,Spring Boot,Junit,我是按照这里的指南来做的,-克隆了这个项目,用Gradle构建并尝试运行…应用程序运行良好。然后,我根据我的要求更改了一些文件结构,并尝试运行那里给出的单元测试用例,但得到了这个错误- 无法找到@SpringBootConfiguration,您需要在测试中使用@ContextConfiguration或@SpringBootTest(类=…) 我只在那里重组代码,这是我目前的项目结构- /projectroot - /src/main/java -Applicati

我是按照这里的指南来做的,-克隆了这个项目,用Gradle构建并尝试运行…应用程序运行良好。然后,我根据我的要求更改了一些文件结构,并尝试运行那里给出的单元测试用例,但得到了这个错误-

无法找到@SpringBootConfiguration,您需要在测试中使用@ContextConfiguration或@SpringBootTest(类=…)

我只在那里重组代码,这是我目前的项目结构-

/projectroot
    - /src/main/java
          -Application.java
          -/controller
               -MyController.java
          -/util
               -MyUtil.java
          -/model
               -MyModel.java
现在正在尝试从运行测试用例

/src/test/java/controller/MyControllerTest.java


我已经经历了这一点,并且理解如果我将我的测试文件夹放在/src/main/java/下,它可能会工作。但如果我这样做了,测试文件将无法编译,而且它似乎也不是将应用程序代码与测试代码放在一起的正确方式。我知道我遗漏了一些非常基本的东西。

您设置测试的方式(使用整个spring启动上下文),我相信
MyControllerTest.java
最多需要与
Application.java
处于同一级别。另外,我注意到
Application.java
正在使用默认包,您应该将其移动到一个包中,以便所有bean都位于您的Spring Boot主类下方:

/projectroot
    - /src/main/java/com/example/project/
          -Application.java
          -/controller
               -MyController.java
          -/util
               -MyUtil.java
          -/model
               -MyModel.java
    - /src/test/java/com/example/project/
          -MyControllerTest.java

如何从测试中解析Spring Boot的上下文

搜索算法从包含测试的包开始工作 直到找到@SpringBootApplication或@SpringBootConfiguration 注释类。只要您以合理的方式构造代码 您的主配置通常是如何找到的

关于将默认软件包与Spring Boot一起使用

当一个类不包含包声明时,它被认为是 在“默认包”中。“默认包”的使用是 一般不鼓励,应避免。它会引起特别的后果 使用@ComponentScan的Spring引导应用程序存在问题, @EntityScan或@SpringBootApplication注释,因为每个类 从每个罐子里,都会读出来

我们建议您遵循Java推荐的包命名约定,并使用反向域名(例如com.example.project)


谢谢,这解决了我的问题。你是一个救生员:)。