如何配置Spring测试默认使用TestConfig类,避免重复添加注解?
解决Spring Boot测试默认使用TestConfig的几种方法
下面给你几个实用方案,不用在每个测试类里重复加@ContextConfiguration(classes = [TestConfig::class]):
1. 自定义组合注解
把常用的测试注解打包成一个自定义注解,后续所有测试类直接用这个注解即可:
@Target(AnnotationTarget.CLASS) @Retention(AnnotationRetention.RUNTIME) @SpringBootTest @AutoConfigureMockMvc @ContextConfiguration(classes = [TestConfig::class]) annotation class CustomSpringBootTest
之后测试类就能简化成:
@CustomSpringBootTest class ParcelCodeControllerTest { // 测试逻辑 }
2. 配置全局测试自动加载
如果想让TestConfig成为所有测试的默认配置类,可在测试资源目录下创建文件:src/test/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
在文件里写入TestConfig的全限定类名(比如com.your.package.TestConfig),Spring Boot测试时会自动扫描并加载这个配置类,无需手动指定。
3. 使用测试专用启动类
在测试目录下创建一个测试用的Spring Boot启动类,把TestConfig导入进去:
@SpringBootApplication( // 可指定扫描包,或排除生产环境配置类 scanBasePackages = ["com.your.package"], exclude = [ProductionConfig::class] ) @Import(TestConfig::class) class TestApplication
之后测试类只需加@SpringBootTest和@AutoConfigureMockMvc即可,因为@SpringBootTest会自动识别测试目录下的启动类,间接加载TestConfig:
@SpringBootTest @AutoConfigureMockMvc class ParcelCodeControllerTest { // 测试逻辑 }
内容的提问来源于stack exchange,提问作者oligofren
相关产品推荐
相关产品推荐

