Spring Boot-如何使用预存数据和之后清除的db测试REST控制器

时间:2019-05-09 11:53:50

标签: spring spring-boot spring-data-jpa

我们正在与Spring Boot 1.5.8(包括JUnit 4.12)合作。我们的数据模型非常复杂。许多实体具有必需的(optional = false)关系。举例来说,所需的@ManyToOne关系如下所示(*不,我们没有这个不用担心):

example

现在,我想保留一个新朋友。为此,我需要在测试前坚持性别实体。它需要提交到数据库。因为我不允许与某人坚持新的关系。我实际上不知道该如何正确处理。

REST call example

  • 首先,我尝试关闭@Transactional,因此应立即提交对数据库的更改。但这对我不起作用,genderRepo.getGender(id)仍然没有返回任何结果,TransactionSynchronizationManager.isActualTransactionActive();说是假。我仍然找不到我的错。但是总有一个很大的缺点,我需要手动清除数据库。
  • 我的第二种方法是使用EntityManagerFactoryUtils.getTransactionalEntityManager(entityManagerFactory).getTransaction()处理交易手册。当我使用beginn&commit时,它可以工作,但是预先存储的数据,测试和清除将在不同的事务中处理。而且我还需要手动清除数据库。这减慢了测试的速度。有时还会导致故障。

有没有更好的方法来解决这个问题?

0 个答案:

没有答案