我试图将数据插入到我的cucumber测试模块中的数据库中。
当使用测试配置文件启动Spring应用程序(mvn spring-boot: run-Dspring-boot.run.profiles=test
)时,它会启动应用程序并正常运行。问题是在cucumber测试执行期间,当尝试设置数据源
(如下面代码中指出的**行)时,它为空。那么我应该再次设置数据源吗?如果是,如何设置。
这不是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));
}
<代码>应用测试。包含测试模块中所有spring数据源的resources文件夹下的yml文件
app-db-url: jdbc:oracle:....
app-db-user: USERNAME
spring:
datasource:
password: PWD
我也经历了下面的解决方案
解决方案-1
解决方案-2
部署模块应用程序配置。yml
....
data:
# Database
app-db-url : @@app-db-url@@
app-db-user: @@app-db-user@@
......
看起来您缺少定义该数据源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();
}
其余的属性可以进入属性文件。
这是我使用SpringBoot的第一天,我试图理解体系结构,因此我开始构建一个hello world应用程序: 在我的pom.xml中,在maven-shade-plugin下,我将mainClass声明如下: 文件目标是src/main/java/com/demo/helloworld.java,该文件中的代码是: 我错过了什么?
集成测试: 当我偶尔运行这个测试时,一切都很好,但是当我和其他测试一起运行它时,没有使用模拟的ServerThroughRabbitMQ,所以一些spring缓存强制使用旧的rabbit侦听器。 我试图调试它,我可以看到,正确的bean被autowired到测试中,但由于某些原因旧监听器使用(旧bean字段instanceID=1新mocked bean instanceID=3),测试失败(不确
使用spring-boot时,一切工作都很好。尽管如此,在spring-boot中已删除了注释和。我试图将代码重构为新版本,但我做不到。对于以下测试,我的应用程序在测试之前没有启动,http://localhost:8080返回404: 如何重构测试以使其在Spring-Boot1.5中工作?
我试图在SpringMVC中运行SpringBoot应用程序,在SpringMVCPOM中添加SpringBoot应用程序依赖项,并扫描SpringBoot包,但我面临以下问题
我是kubernetes的新手,需要在openshift平台上使用k8s confimap将springboot应用程序的属性文件外部化。我已将属性文件保存在git repo中,作为“greeter.message=Spring Bootmyapplication.properties已在库伯内特斯上挂载为卷!”并使用“oc create confimap myconfig--from-file=
我有1个应用程序和2个模块 框架结构 但我不能在MyApp中使用MyModule的文件。IDE显示我“无法访问”错误,我想扩展一个MyModule类的类。而且它不是从MyModule创建类的,有人对此有想法吗?怎么了?