SpringMVC多数据源的单元测试

问题

由于项目中配置的多数据源是动态,在service层的类上或方法上设置了注解,如@DataSource

正常项目运行时可以使用的。但是单元测试时虽然进入了切面,默认运行的还是配置中设置的默认数据源,并没有切换数据源

bean.xml



    
        
            
            
            
        
    
    
    

配置setDataSource,但是单元测试时所设置的无用,只是指定bean不报错

单元测试基类-admin

@ContextConfiguration(locations = {"classpath:applicationContext.xml","classpath:context.xml"})
@ActiveProfiles("devlopment")
public abstract class BaseRunner extends AbstractTransactionalJUnit4SpringContextTests {

    /**
     * 配置admin数据源
     *
     * @param dataSource 数据源
     * @return void
     * @author 杨小华
     * @date 2018/1/22 9:43
     * @since 1.0.0
     */
    @Override
    @Resource(name = "admin")
    public void setDataSource(DataSource dataSource) {
        super.setDataSource(dataSource);
    }

单元测试基类-face

@ContextConfiguration(locations = {"classpath:applicationContext.xml","classpath:config-test.xml","classpath:context.xml"})
@ActiveProfiles("devlopment")
public abstract class FaceBaseRunner extends AbstractTransactionalJUnit4SpringContextTests {

    /**
     * 配置face数据源
     *
     * @param dataSource 数据源
     * @return void
     * @author 杨小华
     * @date 2018/1/22 9:43
     * @since 1.0.0
     */
    @Override
    @Resource(name = "face")
    public void setDataSource(DataSource dataSource) {
        super.setDataSource(dataSource);
    }
}

 

解决

1.新建了一个config-test.xml,配置默认数据源为face,原来的config.xml的默认数据源为admin

config-test.xml 主要代码



    
        
            
            
            
        
    
    
    

 

2.在FaceBaseRunner中多引入一个配置文件,"classpath:config-test.xml"

 

你可能感兴趣的:(雷默)