使用@ContextConfiguration模拟Junit中的Spring环境对象

时间:2015-11-09 15:22:55

标签: java spring

我有这样的测试

RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { AppConfig.class, TestConfig.class})
public class MyTest {
 ........
}

AppConfig是我的应用程序的主要配置,TestConfig是测试配置 它加载测试属性

  @Configuration
  @PropertySource("classpath:test_dev.properties")
    public class DevConfig {
  @Bean
  public DataSource getDataDataSource() {
    BasicDataSource dataSource = new BasicDataSource();

    dataSource.setDriverClassName(env.getProperty("driverclass"));
    dataSource.setUrl(env.getProperty("url"));
    dataSource.setUsername(env.getProperty("username"));
    dataSource.setPassword(env.getProperty("password"));
    return dataSource;
  }

}

问题是test_dev.properties文件有一个加密的密码字段      driverclass = ojdbc:xxx

 url = xxxxxx
 username = abc
 password = #'"@~£$%

我需要使用decryptor来解密它,然后使用env对象上的解密密码。因此env.get(“密码”),真正的密码将返回

所以我的问题是如何在DataSource对象被装箱之前模拟Environment对象。

1 个答案:

答案 0 :(得分:0)

就我而言,我想模拟数据源对象上提交的密码

我首先让数据源bean初始化,然后在我的集成测试中自动连接mybatis环境(不要与spring环境混淆)。

从环境

你可以得到数据源。

来自@beforetest部分的

,诀窍是使用Reflectiontestutils.setfield在数据源上设置密码字段

或者,您可以在目标环境中注入整个数据源 但我没试过

使用Spring的关键动机是轻松注入模拟对象。