簡體   English   中英

使用@ContextConfiguration在Junit中模擬Spring環境對象

[英]Mock the Spring Environment Object In Junit with @ContextConfiguration

我有這樣的測試

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 = #'"@~£$%

我需要使用解密器對其進行解密,然后使用env對象上的解密密碼。 因此env.get(“ password”),真實密碼將返回

所以我的問題是如何在創建數據源對象之前模擬環境對象。

就我而言,我想模擬數據源對象上的密碼

我首先讓數據源bean初始化,然后在集成測試中自動連接mybatis環境(不要與springs環境混淆)。

從環境中可以獲取數據源。

在@beforetest部分中,技巧是使用Reflectiontestutils.setfield在數據源上設置密碼字段

或者,您可以將整個數據源注入目標環境,但是我沒有嘗試

使用Spring的主要動機是輕松注入模擬對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM