Spring Data测试中的数据库操作顺序

时间:2018-12-21 12:58:37

标签: java junit spring-data-jpa spring-data

我正在使用Spring CrudRepository来访问数据库,并且在测试中需要干净的状态,所以有这样的方法

@Before
public void setupDBs() {  
    companyRepository.deleteAll();
    DBUtil.createTestCompanies(companyRepository);
}

添加了一些测试并且可以正常工作,但是随后开始获得

  

由以下原因引起:org.h2.jdbc.JdbcSQLException:唯一索引或主键冲突:...插入公司

从控制台看来,这行

  

2018-12-21 13:45:40.984 DEBUG 6283 --- [main] org.hibernate.SQL:插入公司

来自DBUtil.createTestCompanies(companyRepository);

是在测试开始后执行的,尽管它是@Before方法。 尝试将@Transactional@Before方法都添加到@Test,但保持不变。

解决方案是将清除数据库移到此处

@After
public void clearDB(){
    companyRepository.deleteAll();
}

,现在可以使用了。但是有人可以解释这种行为吗?来自@Before的语句如何在测试中执行?

0 个答案:

没有答案