我在这里关注指南,https://spring.io/guides/gs/spring-boot/ - 克隆项目,使用Gradle构建并尝试运行...应用程序运行正常。然后我按照我的要求更改了一些文件结构,并尝试运行那里给出的单元测试用例,但是得到了这个错误 -
无法找到@SpringBootConfiguration,您需要在测试中使用@ContextConfiguration或@SpringBootTest(classes = ...)
我只重构那里的代码,这是我目前的项目结构 -
/projectroot
- /src/main/java
-Application.java
-/controller
-MyController.java
-/util
-MyUtil.java
-/model
-MyModel.java
现在尝试从
运行测试用例/src/test/java/controller/MyControllerTest.java
我已经完成了这个Stack Overflow link,并且明白如果我把我的测试文件夹放在/ src / main / java /下它可能会有效。但是,如果我这样做,测试文件不会编译,它似乎也不是将应用程序代码与测试代码放在一起的正确方法。我知道我错过了一些非常基本的东西。
答案 0 :(得分:2)
您设置测试的方式(使用整个Spring引导环境),我认为MyControllerTest.java
最多需要与Application.java
处于同一级别。另外,我注意到Application.java
正在使用默认包,您应该将其移动到一个包中,以便所有的bean都在下面您的Spring Boot主类:< / p>
/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 Boot应用程序的问题, @EntityScan或@SpringBootApplication注释,因为每个类 从每个罐子里都会被阅读。
我们建议您遵循Java推荐的程序包命名约定并使用反向域名(例如,com.example.project)。