项目场景:
开发springboot项目时,需要对某一模块/方法进行单独测试,通过测试方法,可以验证代码逻辑的正确性,包括功能性、性能和边界条件等方面;
问题描述
正常情况为只需要添加依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
即可使用注解:@SpringBootTest 和 @Test
但是此次始终无法导包并使用注解,如图:
原因分析:
经过各种排查,使用已知的方法,如:重新clean+install,重启idea,检查是否正确导入依赖等,始终无法解决;
1.依赖正常:
2.指定应该加载的 Spring 配置类
解决方案:
最后发现是测试类放在了src/main/java路径下,不能正常加载;必须放到src/test/java路径下才能正常加载。
重新复习一下:
在 Maven 项目中,`src/main/java` 目录用于存放生产代码,而 `src/test/java` 目录专门用于存放测试代码。测试类应放置在 `src/test/java` 目录下,以便于:
1. 测试范围:测试代码只用于验证生产代码的正确性。生产代码(`src/main/java`)中的类是应用的实际逻辑,它们不应该包含测试内容。测试类放在 `src/test/java` 目录下更符合常见的项目结构规范。
2. 依赖管理:测试类通常需要引用测试专用的依赖,例如 JUnit 或 Mockito,而这些依赖在 Maven 项目中通常通过 `<scope>test</scope>` 来限定仅用于测试范围。如果将测试类放入 `src/main/java`,它会尝试访问一些只在测试范围内可用的依赖,从而导致错误。
3. 构建和部署:在打包时,`src/test/java` 中的测试代码不会被包含到最终的生产包中,确保测试代码不会影响生产环境的性能和安全性。
因此,将测试类放在 `src/test/java` 目录下是标准做法,这样测试代码才能被正确识别并执行。