当前位置: 首页 > 知识库问答 >
问题:

Spring数据库集成测试,何时刷新或?

祁驰
2023-03-14

我对spring相当陌生,正在做一些集成测试。使用Hibernate、MySql和Spring数据JPA。我正在使用事务支持,在每个测试结束时都会回滚所有内容。

例如:

@Test (expected=DataIntegrityViolationException.class)
public void findAndDelete() {
    UUID uuid = UUID.fromString(TESTID);
    User user= iUserService.findOne(uuid);
    iUserService.delete(cashBox);

    iUserService.flush();                

    assertNull(iUserService.findOne(uuid));
}

在上面的代码中,我调用iUserService。flush(),以便将sql发送到DB,并发生预期的DataIntegrityViolationException,因为存在从用户到另一个表的外键(不允许级联,无)。到目前为止一切都很好。

现在,如果我删除iUserService。flush()则不会发生预期的异常,因为sql不会发送到DB。

我尝试将flush()添加到teardown@After方法中,但这不起作用,因为测试看不到测试方法之外的异常。

有没有办法避免在测试方法中调用刷新?

如果我的团队中的开发人员在他们的测试代码中不必使用flush方法,这将是更好的选择

编辑:我尝试添加以下内容

    @Before
public void before() {
    Session session = entityManagerFactory.createEntityManager().unwrap(Session.class);
    session.setFlushMode(FlushMode.ALWAYS);

}

但在每次查询之前,它似乎都会刷新SQL。

共有1个答案

暨修洁
2023-03-14

依我拙见,这比你团队的开发人员知道他们在做什么要好。

它包括默认配置的内容及其后果。

请看一下为什么在测试ORM代码时需要避免误报

 类似资料:
  • 未能配置Spring Boot进行集成测试。冷你请看一下下面的代码: 实体 存储 库 测试配置 应用程序属性 测试用例 我尝试了不同的配置(其最新版本),但一直出现相同的异常: 更奇怪的是,异常的本质是让spring boot根据实体注释自动生成模式。因此,在插入的时候,spring必须创建表,但是看起来它并没有创建。如果有人给我一个想法,我做错了什么,或者如果有人已经面临这样的问题-请让我知道。

  • 假设我有一个测试来断言系统中新用户的注册是否真的成功: 现在,这将在实际数据库中创建一个新的测试用户,因为我希望这个测试在实际环境中运行。这意味着测试不能一直运行,对吗?我应该如何进行此类测试?那些使用系统的实际环境并操纵真实数据的人?

  • 问题内容: 是否有人对从集成测试框架(如Selenium)进行的回滚数据库事务的最佳实践或首选方式有任何建议? 这是当前的情况:我们有一个.net Web项目,其中包含许多在单元测试环境中可以正常工作的单元测试- 每个测试都继承一个父类,该父类在[SetUp]中打开一个事务,并在其中回滚该事务。 [TearDown]。每次测试后,我们的单元测试数据库都恢复到原始状态。 但是,一旦进入集成环境,情况

  • 我有一组Junit测试用例。所有测试用例都必须针对不同的数据库环境执行。在junit测试中使用“@RunWith(SpringJUnit4ClassRunner.class)”时,Spring Boot应用程序只启动一次。但我需要用不同的配置重新启动应用程序,包括flyway迁移和其他与环境相关的应用程序-

  • 我正在使用Spring boot framework(V2.0.2)构建一个REST服务,其中我有在数据库上运行的集成测试。我搜索了很多关于在测试前清理数据库的文章,但不幸的是,我发现它们要么效率低,要么是一个黑客,不适合Spring Boot。你能不能,请忍耐一下,给我一个解决这个问题的好办法? 理想情况下,我认为不应该在每次测试之前清除数据库,而是在一组测试之前清除数据库,比如suite或每个

  • 主要内容:1. 项目依赖,2. Spring组件,3. TestNG + Spring在本教程中,我们将演示如何使用TestNG测试Spring的组件。 使用的工具 : TestNG 6.8.7 Spring 3.2.2.RELEASE Maven 3 Eclipse IDE 1. 项目依赖 为了演示,首先创建一个名称为:TestngSpringIntegration 的 Maven 项目。 要将Spring与TestNG集成,您需要包依懒,添加以下内容: 创建文件:pom.xml