首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在cucumber测试模块中使用主应用程序数据源- Spring-boot应用程序

在cucumber测试模块中使用主应用程序数据源- Spring-boot应用程序
EN

Stack Overflow用户
提问于 2020-08-23 19:29:18
回答 1查看 332关注 0票数 1

我试图将数据插入到spring-boot应用程序中我的cucumber测试模块的数据库中。

当使用测试配置文件(mvn spring-boot:run -Dspring-boot.run.profiles=test)启动spring应用程序时,它会启动应用程序并正常运行。问题是在黄瓜测试执行期间,当尝试设置datasource (正如下面代码中指出的**行)时,它是空的。那么我应该再次设置数据源吗?如果是这样的话是怎么做的。

这不是黄瓜测试相关的问题,问题是我无法访问在主应用程序中设置的数据源。

下面是代码

代码语言:javascript
复制
    @ContextConfiguration(classes = MainApp.class, loader = SpringBootContextLoader.class)
    @ActiveProfiles("test")
    @Configuration
    @PropertySource({"classpath:create-sql.xml"})
    public class TestHelper {
    
        @Value("${CreateSql}")
        private String CreateSql;

        @Autowired
        private SqlQueryBuilder sqlQueryBuilder;
    
        @Autowired
        private NamedParameterJdbcTemplate jdbcTemplate;
    
        @Autowired
        private UserPreferenceFormatter formatter;
    
        @Autowired
        private DataSource dataSource;
    
    public static void getDataList() throws IOException {

            MapSqlParameterSource sqlParamSource = new MapSqlParameterSource();
            sqlQueryBuilder = new SqlQueryBuilder();
    
            jdbcTemplate = new NamedParameterJdbcTemplate(dataSource); ****
    
            String parsedSql = sqlQueryBuilder.parseSql(CreateSql,null,null,null);
            List<DataSummary> dataSummaries = jdbcTemplate.query(parsedSql, sqlParamSource, new DataSummaryRowMapper(null,formatter));
        }

resources文件夹下的application-test.yml文件,其中包含测试模块中的所有spring数据源

代码语言:javascript
复制
app-db-url: jdbc:oracle:....
app-db-user: USERNAME
spring:
  datasource:
    password: PWD

我也通过了下面的解决方案

Solution-1

Solution-2

部署模块app-config.yml

代码语言:javascript
复制
....
data:
    # Database
    app-db-url : @@app-db-url@@
    app-db-user: @@app-db-user@@
......
EN

回答 1

Stack Overflow用户

发布于 2020-08-29 09:08:38

看起来您缺少定义DataSource bean的代码。你应该有这样的东西:

代码语言:javascript
复制
@Configuration
public class DataSourceConfig {
    
    @Bean
    public DataSource getDataSource() {
        DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
        dataSourceBuilder.driverClassName("org.h2.Driver");
        dataSourceBuilder.url("jdbc:h2:mem:test");
        dataSourceBuilder.username("SA");
        dataSourceBuilder.password("");
        return dataSourceBuilder.build();
    }
}

或者类似的东西:

代码语言:javascript
复制
@Bean 
public DataSource getDataSource() { 
    DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create(); 
    dataSourceBuilder.username("SA"); 
    dataSourceBuilder.password(""); 
    return dataSourceBuilder.build(); 
}

其余的属性可以放入属性文件中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63546402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档