【发布时间】: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