如何解决在黄瓜测试模块中使用主应用程序数据源-Spring-boot应用程序
我试图在Spring-boot应用程序的黄瓜测试模块中将数据插入数据库。
使用测试配置文件(mvn spring-boot:run -Dspring-boot.run.profiles=test
)启动spring应用程序时,它会启动应用程序并正常运行。问题是在黄瓜测试执行期间,当尝试设置datasource
(如下面的代码中的**行所示)时,它为null。那我应该重新设置数据源吗?如果可以的话。
这不是黄瓜测试相关的问题,而是我无法访问在主应用程序中设置的数据源。
下面是代码
@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);
List<DataSummary> dataSummaries = jdbcTemplate.query(parsedSql,sqlParamSource,new DataSummaryRowMapper(null,formatter));
}
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@@
......
解决方法
您似乎缺少定义该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();
}
其余的财产所有者可以进入属性文件。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。