项目场景:

开发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` 目录下是标准做法,这样测试代码才能被正确识别并执行。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐