我有这样的测试
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对象。
答案 0 :(得分:0)
就我而言,我想模拟数据源对象上提交的密码
我首先让数据源bean初始化,然后在我的集成测试中自动连接mybatis环境(不要与spring环境混淆)。
从环境你可以得到数据源。
来自@beforetest部分的,诀窍是使用Reflectiontestutils.setfield在数据源上设置密码字段
或者,您可以在目标环境中注入整个数据源 但我没试过
使用Spring的关键动机是轻松注入模拟对象。