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 楼答案
在我的例子中,我想模拟datasource对象上的密码字段
我首先让数据源bean初始化,然后在集成测试中自动连接mybatis环境(不要与springs环境混淆)
从env可以获得数据源
在@beforetest部分,技巧是使用Reflectiontestutils。setfield设置数据源上的密码字段
或者,您可以将整个数据源注入目标环境 但我没有尝试
使用Spring的关键动机是方便地注入模拟对象