内存中的 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是怎么自动启动的?
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是怎么自动启动的?