【问题标题】:In-memory H2 database, insert not working in SpringBootTest内存中的 H2 数据库,插入在 SpringBootTest 中不起作用
【发布时间】:2017-01-30 08:07:38
【问题描述】:

我有一个我想测试的 SpringBootApplication。

以下是有关我的文件的详细信息

application.properties

PRODUCT_DATABASE_PASSWORD=
PRODUCT_DATABASE_USERNAME=sa
PRODUCT_DATABASE_CONNECTION_URL=jdbc:h2:file:./target/db/testdb
PRODUCT_DATABASE_DRIVER=org.h2.Driver

RED_SHIFT_DATABASE_PASSWORD=
RED_SHIFT_DATABASE_USERNAME=sa
RED_SHIFT_DATABASE_CONNECTION_URL=jdbc:h2:file:./target/db/testdb
RED_SHIFT_DATABASE_DRIVER=org.h2.Driver
spring.datasource.platform=h2

配置类

@SpringBootConfiguration
@SpringBootApplication
@Import({ProductDataAccessConfig.class, RedShiftDataAccessConfig.class})
public class TestConfig {

}

主要测试类

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = {TestConfig.class,ConfigFileApplicationContextInitializer.class}, webEnvironment = SpringBootTest.WebEnvironment.NONE)
    public class MainTest {


 @Autowired(required = true)
 @Qualifier("dataSourceRedShift")
 private DataSource dataSource;
 @Test
 public void testHourlyBlock() throws Exception {
    insertDataIntoDb(); //data sucessfully inserted
    SpringApplication.run(Application.class, new String[]{}); //No data found

  }
}

Application.class 中的数据访问;

 try (Connection conn = dataSourceRedShift.getConnection();
             Statement stmt = conn.createStatement() {
//access inserted data

}

请帮忙! PS 对于 Spring Boot 应用程序,正在选择测试 bean,因此 bean 实例化绝对不是问题。我想我缺少一些属性。

我没有在我的应用程序中使用休眠,即使在同一个应用程序上下文(子上下文)中数据也会关闭。即我运行一个 spring boot 应用程序,它读取之前插入的数据

【问题讨论】:

  • 在测试中,默认情况下更改会回滚,是否禁用事务回滚?
  • 我没有使用任何事务管理器。是默认配置的吗?在每次查询都没有帮助后,我确实尝试了 connection.commit!
  • 你可以参考thiedocs
  • 我没有在我的应用程序中使用休眠,即使在同一个应用程序上下文(子上下文)中数据也会关闭。即我运行一个弹簧启动应用程序,它读取之前插入的数据。我还应该实现事务管理器吗?
  • 所以你需要在你的问题中添加所有这些信息。

标签: testing spring-boot h2


【解决方案1】:

问题解决了。 从 application.properties 中删除 spring.datasource.platform=h2。 使我的 h2 数据持续存在。 但是我还是想知道h2是怎么自动启动的?

【讨论】:

  • 可能是因为启用了自动配置 h2。通过添加一个 h2 依赖 springboot 将自动配置 h2 db。
  • 谢谢,我遇到了同样的问题,现在可以了。
猜你喜欢
  • 1970-01-01
  • 2021-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-22
  • 2021-12-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多