我将一些项目从Springboot 1.5.10
迁移到2.0
。
Springboot 2.0.3Release
,JDK10
,mysql
,hikari-cp
完成此工作后,在JUnit test
中,测试用例中的所有数据都保留在数据库中。我认为它不起作用@Tranactional
-org.springframework.transaction.annotation.Transactional
这里是application.yml
和测试班的一部分。
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
jpa:
show-sql: true
hibernate:
ddl-auto: none
database: mysql
database-platform: org.hibernate.dialect.MySQL5Dialect
这里是数据源。
@Configuration
@EnableTransactionManagement
public class DatasourceJPAConfig {
@Bean
@Primary
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
}
这是JUnit测试类的一部分。
@Transactional
@Rollback(true)
@RunWith(SpringRunner.class)
@ActiveProfiles("local")
@SpringBootTest
public class RepoTests {
@Autowired
private TestRepository testRepository;
@Test
public void saveTest() {
var name = "test";
var description = "test description"
var item = TestDomain.builder()
.name(name)
.description(description)
.build();
testRepository.save(item);
var optional = testRepository.findById(item.getId());
assertTrue(optional.isPresent());
assertEquals(optional.get().getDescription(), description);
assertEquals(optional.get().getName(), name);
}
}
运行saveTest
方法之后,在数据库中增加1行。
答案 0 :(得分:0)
添加数据源进行测试,将set auto commit 设置为false
@Autowired
private DataSource dataSource;
内部测试
((HikariDataSource)dataSource).setAutoCommit(false);