Java Spring引导集成测试回滚不起作用
在SpringBoot中,我试图创建我的第一个事务性测试,但该测试不起作用Java Spring引导集成测试回滚不起作用,java,spring,spring-boot,transactions,integration-testing,Java,Spring,Spring Boot,Transactions,Integration Testing,在SpringBoot中,我试图创建我的第一个事务性测试,但该测试不起作用 @TestPropertySource(locations = "classpath:test.properties") @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @RunWith(SpringJUnit4ClassRunner.class) //@RunWith(SpringRunner.class) @Tra
@TestPropertySource(locations = "classpath:test.properties")
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@RunWith(SpringJUnit4ClassRunner.class)
//@RunWith(SpringRunner.class)
@Transactional
@TestExecutionListeners(
mergeMode = TestExecutionListeners.MergeMode.MERGE_WITH_DEFAULTS,
listeners = {TransactionalTestExecutionListener.class}
)
public class IntegrationTests
{
@Autowired
TemperatureLogRepository temperatureLogRepository;
@Test
@SqlGroup({
@Sql(
executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD,
config = @SqlConfig(transactionMode = ISOLATED),
scripts = "classpath:sqls/insertRecords2.sql"
)
})
public void firstRepoTest() throws SQLException
{
assertThat(temperatureLogRepository.getFullList().size()).isEqualByComparingTo(0);
}
}
我知道SqlGroup是不必要的,但是会添加更多的文件
我现在有:
getFullList()
方法可以读取它并返回正确的数据getFullList()
方法运行之前,是否可能将数据提交给数据库
我需要的是:
@Sql
将数据插入事务getFullList()
从事务中读取数据@Sql
中删除@SqlConfig
:
config = @SqlConfig(transactionMode = ISOLATED)
或更改为:
config = @SqlConfig(transactionMode = TransactionMode.INFERRED)
SQL脚本在不回滚的单独事务中运行:
org.springframework.test.context.jdbc.SqlConfig.TransactionMode.com
指示SQL脚本应始终以新的方式执行,
将立即提交的独立事务
我正在使用before阶段。查询运行良好。但是我不想在测试后运行任何东西,我需要一个简单的回滚。我不想在数据库中提交任何内容。我的问题是回滚,看起来我有一个事务提交。更新了答案。我已经尝试过了。在本例中,在测试之后,我在测试数据库中看不到任何内容,因此回滚很好,但我的repo无法读取事务。还有其他想法吗?:)你有什么例外吗?我尝试过类似的配置,但效果很好。也许您使用的数据源/DB配置不止一个?
config = @SqlConfig(transactionMode = TransactionMode.INFERRED)