fix: 测试环境仍然使用test环境中的数据库连接 并在单元测试中mock profiles
This commit is contained in:
@@ -9,8 +9,8 @@ import org.springframework.core.env.Environment;
|
|||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.FileNotFoundException;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -29,12 +29,13 @@ public class DruidConfig {
|
|||||||
public static final String DB_CONFIG_USERNAME_PREFIX = "spring.datasource.username";
|
public static final String DB_CONFIG_USERNAME_PREFIX = "spring.datasource.username";
|
||||||
public static final String DB_CONFIG_PASSWORD_PREFIX = "spring.datasource.password";
|
public static final String DB_CONFIG_PASSWORD_PREFIX = "spring.datasource.password";
|
||||||
public static final String DB_CONFIG_DRIVER_CLASS_NAME_PREFIX = "spring.datasource.driver-class-name";
|
public static final String DB_CONFIG_DRIVER_CLASS_NAME_PREFIX = "spring.datasource.driver-class-name";
|
||||||
|
public static final String TEST_PROFILES = "test";
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public DruidDataSource initDataSource() throws IOException {
|
public DruidDataSource initDataSource() throws IOException {
|
||||||
DruidDataSource dataSource;
|
DruidDataSource dataSource;
|
||||||
File file = new File(DB_CONFIG_PATH);
|
File file = new File(DB_CONFIG_PATH);
|
||||||
if (file.exists()) {
|
if (file.exists() && !Arrays.asList(env.getActiveProfiles()).contains(TEST_PROFILES)) {
|
||||||
log.debug("从文件中获取数据库配置");
|
log.debug("从文件中获取数据库配置");
|
||||||
dataSource = readConfigFromFile(file);
|
dataSource = readConfigFromFile(file);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import com.alibaba.druid.pool.DruidDataSource;
|
|||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
import org.mockito.Mock;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.core.env.Environment;
|
import org.springframework.core.env.Environment;
|
||||||
|
|
||||||
@@ -14,15 +15,22 @@ import java.io.File;
|
|||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.Assert.*;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
public class DruidConfigTest extends BaseTest {
|
public class DruidConfigTest extends BaseTest {
|
||||||
|
|
||||||
@Autowired
|
@Mock
|
||||||
Environment env;
|
Environment env;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
Environment globalEnvironment;
|
||||||
|
|
||||||
|
|
||||||
private File configFile;
|
private File configFile;
|
||||||
private File bakConfigFile;
|
private File bakConfigFile;
|
||||||
|
|
||||||
@@ -30,8 +38,11 @@ public class DruidConfigTest extends BaseTest {
|
|||||||
public void initDataSource() throws IOException {
|
public void initDataSource() throws IOException {
|
||||||
|
|
||||||
DruidConfig druidConfig = new DruidConfig();
|
DruidConfig druidConfig = new DruidConfig();
|
||||||
|
|
||||||
druidConfig.env = env;
|
druidConfig.env = env;
|
||||||
|
|
||||||
|
System.out.println(Arrays.toString(env.getActiveProfiles()));
|
||||||
|
|
||||||
// 无配置文件
|
// 无配置文件
|
||||||
assertTrue(!configFile.exists() || configFile.delete());
|
assertTrue(!configFile.exists() || configFile.delete());
|
||||||
DruidDataSource druidDataSource = druidConfig.initDataSource();
|
DruidDataSource druidDataSource = druidConfig.initDataSource();
|
||||||
@@ -86,6 +97,11 @@ public class DruidConfigTest extends BaseTest {
|
|||||||
System.out.println("备份文件成功");
|
System.out.println("备份文件成功");
|
||||||
copyFile(configFile, bakConfigFile);
|
copyFile(configFile, bakConfigFile);
|
||||||
}
|
}
|
||||||
|
when(this.env.getActiveProfiles()).thenReturn(new String[]{"dev"});
|
||||||
|
when(this.env.getProperty(DruidConfig.DB_CONFIG_PASSWORD_PREFIX)).thenReturn(globalEnvironment.getProperty(DruidConfig.DB_CONFIG_PASSWORD_PREFIX));
|
||||||
|
when(this.env.getProperty(DruidConfig.DB_CONFIG_URL_PREFIX)).thenReturn(globalEnvironment.getProperty(DruidConfig.DB_CONFIG_URL_PREFIX));
|
||||||
|
when(this.env.getProperty(DruidConfig.DB_CONFIG_USERNAME_PREFIX)).thenReturn(globalEnvironment.getProperty(DruidConfig.DB_CONFIG_USERNAME_PREFIX));
|
||||||
|
when(this.env.getProperty(DruidConfig.DB_CONFIG_DRIVER_CLASS_NAME_PREFIX)).thenReturn(globalEnvironment.getProperty(DruidConfig.DB_CONFIG_DRIVER_CLASS_NAME_PREFIX));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user