Commit e9f2e91f7e01a100741847f25b7d8de502b43d20

Authored by YunaiV
1 parent 3320f42b

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

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