Commit e9f2e91f7e01a100741847f25b7d8de502b43d20

Authored by YunaiV
1 parent 3320f42b

解决 redis 和 mysql 在单元测试会报错的问题

src/test/java/cn/iocoder/dashboard/config/QuartzTestConfiguration.java
1 package cn.iocoder.dashboard.config; 1 package cn.iocoder.dashboard.config;
2 2
3 import org.mockito.Mockito; 3 import org.mockito.Mockito;
4 -import org.quartz.impl.StdScheduler; 4 +import org.quartz.Scheduler;
5 import org.springframework.context.annotation.Bean; 5 import org.springframework.context.annotation.Bean;
6 import org.springframework.context.annotation.Configuration; 6 import org.springframework.context.annotation.Configuration;
7 -import org.springframework.context.annotation.Lazy;  
8 7
9 @Configuration 8 @Configuration
10 -@Lazy(false)  
11 public class QuartzTestConfiguration { 9 public class QuartzTestConfiguration {
12 10
13 @Bean 11 @Bean
14 - public StdScheduler scheduler() {  
15 - return Mockito.mock(StdScheduler.class); 12 + public Scheduler scheduler() {
  13 + return Mockito.mock(Scheduler.class);
16 } 14 }
17 15
18 } 16 }
src/test/java/cn/iocoder/dashboard/config/RedisTestConfiguration.java
@@ -12,7 +12,7 @@ import org.springframework.context.annotation.Lazy; @@ -12,7 +12,7 @@ import org.springframework.context.annotation.Lazy;
12 12
13 import java.io.IOException; 13 import java.io.IOException;
14 14
15 -@Configuration 15 +@Configuration(proxyBeanMethods = false)
16 @Lazy(false) // 禁用懒加载,因为需要保证 Redis Server 必须先启动 16 @Lazy(false) // 禁用懒加载,因为需要保证 Redis Server 必须先启动
17 @EnableConfigurationProperties(RedisProperties.class) 17 @EnableConfigurationProperties(RedisProperties.class)
18 @AutoConfigureBefore({RedisAutoConfiguration.class, RedissonAutoConfiguration.class}) // 在 Redis 自动配置前,进行初始化 18 @AutoConfigureBefore({RedisAutoConfiguration.class, RedissonAutoConfiguration.class}) // 在 Redis 自动配置前,进行初始化
@@ -32,6 +32,7 @@ public class RedisTestConfiguration { @@ -32,6 +32,7 @@ public class RedisTestConfiguration {
32 @Bean(destroyMethod = "stop") 32 @Bean(destroyMethod = "stop")
33 public RedisServer redisServer(RedisProperties properties) throws IOException { 33 public RedisServer redisServer(RedisProperties properties) throws IOException {
34 RedisServer redisServer = new RedisServer(properties.getPort()); 34 RedisServer redisServer = new RedisServer(properties.getPort());
  35 + // TODO 芋艿:一次执行多个单元测试时,貌似创建多个 spring 容器,导致不进行 stop。这样,就导致端口被占用,无法启动。。。
35 try { 36 try {
36 redisServer.start(); 37 redisServer.start();
37 } catch (Exception ignore) {} 38 } catch (Exception ignore) {}
src/test/java/cn/iocoder/dashboard/modules/tool/dal/mysql/codegen/ToolInformationSchemaColumnMapperTest.java
1 package cn.iocoder.dashboard.modules.tool.dal.mysql.codegen; 1 package cn.iocoder.dashboard.modules.tool.dal.mysql.codegen;
2 2
  3 +import cn.iocoder.dashboard.BaseSpringBootUnitTest;
3 import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolSchemaColumnDO; 4 import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolSchemaColumnDO;
4 import org.junit.jupiter.api.Test; 5 import org.junit.jupiter.api.Test;
5 -import org.springframework.boot.test.context.SpringBootTest;  
6 -import org.springframework.test.context.ActiveProfiles;  
7 -import org.springframework.test.context.jdbc.Sql;  
8 6
9 import javax.annotation.Resource; 7 import javax.annotation.Resource;
10 import java.util.List; 8 import java.util.List;
11 9
12 import static org.junit.jupiter.api.Assertions.assertTrue; 10 import static org.junit.jupiter.api.Assertions.assertTrue;
13 11
14 -@SpringBootTest  
15 -@ActiveProfiles("unit-test")  
16 -public class ToolInformationSchemaColumnMapperTest { 12 +public class ToolInformationSchemaColumnMapperTest extends BaseSpringBootUnitTest {
17 13
18 @Resource 14 @Resource
19 private ToolSchemaColumnMapper toolInformationSchemaColumnMapper; 15 private ToolSchemaColumnMapper toolInformationSchemaColumnMapper;
20 16
21 @Test 17 @Test
22 - @Sql(scripts = "/sql/clean.sql", executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD)  
23 public void testSelectListByTableName() { 18 public void testSelectListByTableName() {
24 List<ToolSchemaColumnDO> columns = toolInformationSchemaColumnMapper 19 List<ToolSchemaColumnDO> columns = toolInformationSchemaColumnMapper
25 .selectListByTableName("inf_config"); 20 .selectListByTableName("inf_config");
src/test/java/cn/iocoder/dashboard/modules/tool/dal/mysql/codegen/ToolInformationSchemaTableMapperTest.java
1 package cn.iocoder.dashboard.modules.tool.dal.mysql.codegen; 1 package cn.iocoder.dashboard.modules.tool.dal.mysql.codegen;
2 2
  3 +import cn.iocoder.dashboard.BaseSpringBootUnitTest;
3 import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolSchemaTableDO; 4 import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolSchemaTableDO;
4 import org.junit.jupiter.api.Test; 5 import org.junit.jupiter.api.Test;
5 -import org.springframework.boot.test.context.SpringBootTest;  
6 6
7 import javax.annotation.Resource; 7 import javax.annotation.Resource;
8 import java.util.List; 8 import java.util.List;
9 9
10 import static org.junit.jupiter.api.Assertions.assertTrue; 10 import static org.junit.jupiter.api.Assertions.assertTrue;
11 11
12 -@SpringBootTest  
13 -class ToolInformationSchemaTableMapperTest { 12 +class ToolInformationSchemaTableMapperTest extends BaseSpringBootUnitTest {
14 13
15 @Resource 14 @Resource
16 private ToolSchemaTableMapper toolInformationSchemaTableMapper; 15 private ToolSchemaTableMapper toolInformationSchemaTableMapper;
src/test/java/cn/iocoder/dashboard/modules/tool/service/codegen/impl/ToolCodegenEngineTest.java
1 package cn.iocoder.dashboard.modules.tool.service.codegen.impl; 1 package cn.iocoder.dashboard.modules.tool.service.codegen.impl;
2 2
  3 +import cn.iocoder.dashboard.BaseSpringBootUnitTest;
3 import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenColumnDO; 4 import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenColumnDO;
4 import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenTableDO; 5 import cn.iocoder.dashboard.modules.tool.dal.dataobject.codegen.ToolCodegenTableDO;
5 import cn.iocoder.dashboard.modules.tool.dal.mysql.codegen.ToolCodegenColumnMapper; 6 import cn.iocoder.dashboard.modules.tool.dal.mysql.codegen.ToolCodegenColumnMapper;
@@ -11,8 +12,7 @@ import javax.annotation.Resource; @@ -11,8 +12,7 @@ import javax.annotation.Resource;
11 import java.util.List; 12 import java.util.List;
12 import java.util.Map; 13 import java.util.Map;
13 14
14 -@SpringBootTest  
15 -public class ToolCodegenEngineTest { 15 +public class ToolCodegenEngineTest extends BaseSpringBootUnitTest {
16 16
17 @Resource 17 @Resource
18 private ToolCodegenTableMapper codegenTableMapper; 18 private ToolCodegenTableMapper codegenTableMapper;
src/test/java/cn/iocoder/dashboard/modules/tool/service/codegen/impl/ToolCodegenSQLParserTest.java
1 package cn.iocoder.dashboard.modules.tool.service.codegen.impl; 1 package cn.iocoder.dashboard.modules.tool.service.codegen.impl;
2 2
  3 +import cn.iocoder.dashboard.BaseSpringBootUnitTest;
3 import org.junit.jupiter.api.Test; 4 import org.junit.jupiter.api.Test;
4 5
5 -import static org.junit.jupiter.api.Assertions.*;  
6 -  
7 -class ToolCodegenSQLParserTest { 6 +public class ToolCodegenSQLParserTest extends BaseSpringBootUnitTest {
8 7
9 @Test 8 @Test
10 public void testParse() { 9 public void testParse() {
src/test/java/cn/iocoder/dashboard/modules/tool/service/codegen/impl/ToolCodegenServiceImplTest.java
1 package cn.iocoder.dashboard.modules.tool.service.codegen.impl; 1 package cn.iocoder.dashboard.modules.tool.service.codegen.impl;
2 2
  3 +import cn.iocoder.dashboard.BaseSpringBootUnitTest;
3 import org.junit.jupiter.api.Test; 4 import org.junit.jupiter.api.Test;
4 import org.springframework.boot.test.context.SpringBootTest; 5 import org.springframework.boot.test.context.SpringBootTest;
5 6
6 import javax.annotation.Resource; 7 import javax.annotation.Resource;
7 8
8 -@SpringBootTest  
9 -class ToolCodegenServiceImplTest { 9 +class ToolCodegenServiceImplTest extends BaseSpringBootUnitTest {
10 10
11 @Resource 11 @Resource
12 private ToolCodegenServiceImpl toolCodegenService; 12 private ToolCodegenServiceImpl toolCodegenService;
src/test/resources/application-unit-test.yaml
@@ -31,7 +31,7 @@ spring: @@ -31,7 +31,7 @@ spring:
31 # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优 31 # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
32 redis: 32 redis:
33 host: 127.0.0.1 # 地址 33 host: 127.0.0.1 # 地址
34 - port: 36379 # 端口(单元测试,使用 363979 端口) 34 + port: 16379 # 端口(单元测试,使用 16379 端口)
35 database: 0 # 数据库索引 35 database: 0 # 数据库索引
36 36
37 --- #################### 定时任务相关配置 #################### 37 --- #################### 定时任务相关配置 ####################