diff --git a/src/main/java/cn/celess/blog/configuration/DruidConfig.java b/src/main/java/cn/celess/blog/configuration/DruidConfig.java index 25bdb1d..0a2f08f 100644 --- a/src/main/java/cn/celess/blog/configuration/DruidConfig.java +++ b/src/main/java/cn/celess/blog/configuration/DruidConfig.java @@ -9,8 +9,8 @@ import org.springframework.core.env.Environment; import java.io.File; import java.io.FileInputStream; -import java.io.FileNotFoundException; import java.io.IOException; +import java.util.Arrays; 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_PASSWORD_PREFIX = "spring.datasource.password"; public static final String DB_CONFIG_DRIVER_CLASS_NAME_PREFIX = "spring.datasource.driver-class-name"; + public static final String TEST_PROFILES = "test"; @Bean public DruidDataSource initDataSource() throws IOException { DruidDataSource dataSource; File file = new File(DB_CONFIG_PATH); - if (file.exists()) { + if (file.exists() && !Arrays.asList(env.getActiveProfiles()).contains(TEST_PROFILES)) { log.debug("从文件中获取数据库配置"); dataSource = readConfigFromFile(file); } else { diff --git a/src/test/java/cn/celess/blog/configuration/DruidConfigTest.java b/src/test/java/cn/celess/blog/configuration/DruidConfigTest.java index d0b9e97..047fd79 100644 --- a/src/test/java/cn/celess/blog/configuration/DruidConfigTest.java +++ b/src/test/java/cn/celess/blog/configuration/DruidConfigTest.java @@ -7,6 +7,7 @@ import com.alibaba.druid.pool.DruidDataSource; import org.junit.After; import org.junit.Before; import org.junit.Test; +import org.mockito.Mock; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.env.Environment; @@ -14,15 +15,22 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; +import java.util.Arrays; import java.util.Properties; import static org.junit.Assert.*; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; public class DruidConfigTest extends BaseTest { - @Autowired + @Mock Environment env; + @Autowired + Environment globalEnvironment; + + private File configFile; private File bakConfigFile; @@ -30,8 +38,11 @@ public class DruidConfigTest extends BaseTest { public void initDataSource() throws IOException { DruidConfig druidConfig = new DruidConfig(); + druidConfig.env = env; + System.out.println(Arrays.toString(env.getActiveProfiles())); + // 无配置文件 assertTrue(!configFile.exists() || configFile.delete()); DruidDataSource druidDataSource = druidConfig.initDataSource(); @@ -86,6 +97,11 @@ public class DruidConfigTest extends BaseTest { System.out.println("备份文件成功"); 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)); } /**