我试图将数据插入到spring-boot应用程序中我的cucumber测试模块的数据库中。
当使用测试配置文件(mvn spring-boot:run -Dspring-boot.run.profiles=test)启动spring应用程序时,它会启动应用程序并正常运行。问题是在黄瓜测试执行期间,当尝试设置datasource (正如下面代码中指出的**行)时,它是空的。那么我应该再次设置数据源吗?如果是这样的话是怎么做的。
这不是黄瓜测试相关的问题,问题是我无法访问在主应用程序中设置的数据源。
下面是代码
@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数据源
app-db-url: jdbc:oracle:....
app-db-user: USERNAME
spring:
datasource:
password: PWD我也通过了下面的解决方案
部署模块app-config.yml
....
data:
# Database
app-db-url : @@app-db-url@@
app-db-user: @@app-db-user@@
......发布于 2020-08-29 09:08:38
看起来您缺少定义DataSource bean的代码。你应该有这样的东西:
@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();
}
}或者类似的东西:
@Bean
public DataSource getDataSource() {
DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
dataSourceBuilder.username("SA");
dataSourceBuilder.password("");
return dataSourceBuilder.build();
}其余的属性可以放入属性文件中。
https://stackoverflow.com/questions/63546402
复制相似问题