内存中的 H2 数据库,插入在 SpringBootTest 中不起作用

In-memory H2 database, insert not working in SpringBootTest

I have a SpringBootApplicationWhich I wish to test.

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

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

ConfigurationClass

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

}

Main Test Class

@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

  }
}

Data Access In Application.class;

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

}

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

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

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