我试图在spring启动应用程序的cucumber tests模块中将数据插入数据库。
当用测试配置文件启动spring应用程序时( mvn spring-boot:run -Dspring-boot.run.profiles=test
)它启动应用程序并正常运行。问题是在测试执行期间尝试设置 datasource
(正如下面代码中的**行所指出的)它是空的。我应该重新设置数据源吗?如果是,怎么办。
这不是 cucumber 测试相关的问题,问题是我不能访问的数据源已设置在主应用程序。
下面是代码
@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));
}
``` `application-test.yml` 包含测试模块中所有spring数据源的resources文件夹下的文件
app-db-url: jdbc:oracle:....
app-db-user: USERNAME
spring:
datasource:
password: PWD
我也经历了下面的解决方案
解决方案-1
解决方案-2
部署模块 `app-config.yml` ```
....
data:
# Database
app-db-url : @@app-db-url@@
app-db-user: @@app-db-user@@
......
1条答案
按热度按时间wgeznvg71#
看起来您缺少定义该数据源bean的代码。你应该有这样的东西:
或者类似的:
其余的属性可以进入一个属性文件。