代码之家  ›  专栏  ›  技术社区  ›  Mohamed Ibrahim Elsayed

用@Transactional注释的服务方法的Spring-Boot集成测试(propagation=propagation.REQUIRES_NEW)

  •  0
  • Mohamed Ibrahim Elsayed  · 技术社区  · 7 年前

    @Transactional(propagation = Propagation.REQUIRES_NEW) 被称为。

    @Test
    @Transactional
    @Sql(scripts = {
            "/sql/insert_some_records.sql"
    }, executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD)
    

    有了这个配置,我有了一个奇怪的行为,当我试图调试时,我发现我试图测试的服务bean类方法找不到我在 @Sql myRepo.findAll() 在方法内部获取空列表。

    在更改了 致:

    @Transactional(propagation = Propagation.NEVER)

    或:

    @Transactional(propagation = Propagation.SUPPORTS)

    服务类中的方法可以正确地从数据库中找到所有记录,但缺点是我必须在测试之后通过脚本手动删除这些插入的记录。

    0 回复  |  直到 7 年前