有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用@ContextConfiguration在Junit中模拟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。获取(“密码”),将返回真实密码

所以我的问题是如何在数据源对象装箱之前模拟环境对象


共 (1) 个答案

  1. # 1 楼答案

    在我的例子中,我想模拟datasource对象上的密码字段

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

    从env可以获得数据源

    在@beforetest部分,技巧是使用Reflectiontestutils。setfield设置数据源上的密码字段

    或者,您可以将整个数据源注入目标环境 但我没有尝试

    使用Spring的关键动机是方便地注入模拟对象