mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-10-31 18:28:43 +08:00 
			
		
		
		
	解决 spring.sql.init.schema-locations 不自动初始化,通过自定义的 SqlInitializationTestConfiguration 实现
This commit is contained in:
		| @@ -3,6 +3,8 @@ package cn.iocoder.yudao.module.system.test; | ||||
| import cn.iocoder.yudao.framework.datasource.config.YudaoDataSourceAutoConfiguration; | ||||
| import cn.iocoder.yudao.framework.mybatis.config.YudaoMybatisAutoConfiguration; | ||||
| import cn.iocoder.yudao.framework.redis.config.YudaoRedisAutoConfiguration; | ||||
| import cn.iocoder.yudao.framework.test.config.RedisTestConfiguration; | ||||
| import cn.iocoder.yudao.framework.test.config.SqlInitializationTestConfiguration; | ||||
| import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure; | ||||
| import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration; | ||||
| import org.redisson.spring.starter.RedissonAutoConfiguration; | ||||
| @@ -23,7 +25,6 @@ import org.springframework.test.context.jdbc.Sql; | ||||
|  */ | ||||
| @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE, classes = BaseDbAndRedisUnitTest.Application.class) | ||||
| @ActiveProfiles("unit-test") // 设置使用 application-unit-test 配置文件 | ||||
| @Sql(scripts = "/sql/create_tables.sql", executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD) // 每个单元测试结束前,创建表 | ||||
| @Sql(scripts = "/sql/clean.sql", executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD) // 每个单元测试结束后,清理 DB | ||||
| public class BaseDbAndRedisUnitTest { | ||||
|  | ||||
| @@ -33,9 +34,11 @@ public class BaseDbAndRedisUnitTest { | ||||
|             DataSourceAutoConfiguration.class, // Spring DB 自动配置类 | ||||
|             DataSourceTransactionManagerAutoConfiguration.class, // Spring 事务自动配置类 | ||||
|             DruidDataSourceAutoConfigure.class, // Druid 自动配置类 | ||||
|             SqlInitializationTestConfiguration.class, // SQL 初始化 | ||||
|             // MyBatis 配置类 | ||||
|             YudaoMybatisAutoConfiguration.class, // 自己的 MyBatis 配置类 | ||||
|             MybatisPlusAutoConfiguration.class, // MyBatis 的自动配置类 | ||||
|  | ||||
|             // Redis 配置类 | ||||
|             RedisTestConfiguration.class, // Redis 测试配置类,用于启动 RedisServer | ||||
|             RedisAutoConfiguration.class, // Spring Redis 自动配置类 | ||||
|   | ||||
| @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.system.test; | ||||
|  | ||||
| import cn.iocoder.yudao.framework.datasource.config.YudaoDataSourceAutoConfiguration; | ||||
| import cn.iocoder.yudao.framework.mybatis.config.YudaoMybatisAutoConfiguration; | ||||
| import cn.iocoder.yudao.framework.test.config.SqlInitializationTestConfiguration; | ||||
| import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure; | ||||
| import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration; | ||||
| import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; | ||||
| @@ -20,7 +21,6 @@ import org.springframework.test.context.jdbc.Sql; | ||||
|  */ | ||||
| @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE, classes = BaseDbUnitTest.Application.class) | ||||
| @ActiveProfiles("unit-test") // 设置使用 application-unit-test 配置文件 | ||||
| @Sql(scripts = "/sql/create_tables.sql", executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD) // 每个单元测试结束前,创建表 | ||||
| @Sql(scripts = "/sql/clean.sql", executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD) // 每个单元测试结束后,清理 DB | ||||
| public class BaseDbUnitTest { | ||||
|  | ||||
| @@ -30,6 +30,7 @@ public class BaseDbUnitTest { | ||||
|             DataSourceAutoConfiguration.class, // Spring DB 自动配置类 | ||||
|             DataSourceTransactionManagerAutoConfiguration.class, // Spring 事务自动配置类 | ||||
|             DruidDataSourceAutoConfigure.class, // Druid 自动配置类 | ||||
|             SqlInitializationTestConfiguration.class, // SQL 初始化 | ||||
|             // MyBatis 配置类 | ||||
|             YudaoMybatisAutoConfiguration.class, // 自己的 MyBatis 配置类 | ||||
|             MybatisPlusAutoConfiguration.class, // MyBatis 的自动配置类 | ||||
|   | ||||
| @@ -1,6 +1,7 @@ | ||||
| package cn.iocoder.yudao.module.system.test; | ||||
|  | ||||
| import cn.iocoder.yudao.framework.redis.config.YudaoRedisAutoConfiguration; | ||||
| import cn.iocoder.yudao.framework.test.config.RedisTestConfiguration; | ||||
| import org.redisson.spring.starter.RedissonAutoConfiguration; | ||||
| import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; | ||||
| import org.springframework.boot.test.context.SpringBootTest; | ||||
|   | ||||
| @@ -1,30 +0,0 @@ | ||||
| package cn.iocoder.yudao.module.system.test; | ||||
|  | ||||
| import com.github.fppt.jedismock.RedisServer; | ||||
| import org.springframework.boot.autoconfigure.data.redis.RedisProperties; | ||||
| import org.springframework.boot.context.properties.EnableConfigurationProperties; | ||||
| import org.springframework.context.annotation.Bean; | ||||
| import org.springframework.context.annotation.Configuration; | ||||
| import org.springframework.context.annotation.Lazy; | ||||
|  | ||||
| import java.io.IOException; | ||||
|  | ||||
| @Configuration(proxyBeanMethods = false) | ||||
| @Lazy(false) // 禁止延迟加载 | ||||
| @EnableConfigurationProperties(RedisProperties.class) | ||||
| public class RedisTestConfiguration { | ||||
|  | ||||
|     /** | ||||
|      * 创建模拟的 Redis Server 服务器 | ||||
|      */ | ||||
|     @Bean | ||||
|     public RedisServer redisServer(RedisProperties properties) throws IOException { | ||||
|         RedisServer redisServer = new RedisServer(properties.getPort()); | ||||
|         // TODO 芋艿:一次执行多个单元测试时,貌似创建多个 spring 容器,导致不进行 stop。这样,就导致端口被占用,无法启动。。。 | ||||
|         try { | ||||
|             redisServer.start(); | ||||
|         } catch (Exception ignore) {} | ||||
|         return redisServer; | ||||
|     } | ||||
|  | ||||
| } | ||||
| @@ -16,6 +16,9 @@ spring: | ||||
|     druid: | ||||
|       async-init: true # 单元测试,异步初始化 Druid 连接池,提升启动速度 | ||||
|       initial-size: 1 # 单元测试,配置为 1,提升启动速度 | ||||
|   sql: | ||||
|     init: | ||||
|       schema-locations: classpath:/sql/create_tables.sql | ||||
|  | ||||
|   # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优 | ||||
|   redis: | ||||
| @@ -23,6 +26,7 @@ spring: | ||||
|     port: 16379 # 端口(单元测试,使用 16379 端口) | ||||
|     database: 0 # 数据库索引 | ||||
|  | ||||
|  | ||||
| mybatis: | ||||
|   lazy-initialization: true # 单元测试,设置 MyBatis Mapper 延迟加载,加速每个单元测试 | ||||
|  | ||||
|   | ||||
| @@ -394,9 +394,14 @@ CREATE TABLE IF NOT EXISTS "system_social_user" ( | ||||
| CREATE TABLE IF NOT EXISTS "system_tenant" ( | ||||
|     "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, | ||||
|     "name" varchar(63) NOT NULL, | ||||
|     "contact_user_id" bigint NOT NULL, | ||||
|     "contact_name" varchar(255) NOT NULL, | ||||
|     "contact_mobile" varchar(255), | ||||
|     "status" tinyint NOT NULL, | ||||
|     "domain" varchar(63) DEFAULT '', | ||||
|     "package_id"  bigint NOT NULL, | ||||
|     "expire_time" timestamp NOT NULL, | ||||
|     "account_count" int NOT NULL, | ||||
|     "creator" varchar(64) DEFAULT '', | ||||
|     "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, | ||||
|     "updater" varchar(64) DEFAULT '', | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 YunaiV
					YunaiV