【问题标题】:Using SQL database for running tests in Jhipster在 Jhipster 中使用 SQL 数据库运行测试
【发布时间】:2018-06-25 22:14:44
【问题描述】:

我已将 test 应用程序属性配置为使用 Postgresql。所有测试似乎都有效,但这并不完全正确。

当我进行实际的持久性数据测试时,即使运行 liquibase,也没有数据保存到 postgresql 数据库中。

我使用 postgresql 配置的 application.yml 的相关部分。

spring:
    application:
        name: stackoverflow
    jackson:
        serialization.write_dates_as_timestamps: false
    cache:
        type: none
    datasource:
            type: com.zaxxer.hikari.HikariDataSource
            url: jdbc:postgresql://127.0.0.1:5432/store_test?user=postgres
    jpa:
        database-platform: io.github.jhipster.domain.util.FixedPostgreSQL82Dialect
        database: POSTGRESQL
        show-sql: false
        generate-ddl: false
        hibernate:
          ddl-auto: none
        properties:
            hibernate.id.new_generator_mappings: true
            hibernate.cache.use_second_level_cache: false
            hibernate.cache.use_query_cache: false
            hibernate.generate_statistics: true

按照正常情况,有一个 createEntity 方法来表示实体 Company

我试过了

em.persist(company)
em.flush(company)

还有

companyRepository.saveAndFlush(company)

让 JHipster 对真实数据库进行更正测试,或者如果我错误地保存数据,我缺少什么。

【问题讨论】:

  • 显示用于写入数据并验证它是否在数据库中的代码。
  • 默认情况下,JHipster 生成的测试是@Transactionalannotated,所以数据修改被回滚。
  • 这就是我所理解的,但是当我在测试中间执行断点时,我看到整个表都丢失了,然后在特定单元测试完成后重新创建它。当我进行本机查询时,它不返回任何数据,但 Jpa 查询似乎可以工作。
  • 您的本机查询是否在同一事务中运行?我对此表示怀疑,因此即使应用程序在断点处停止,它也无法读取您的数据。这就是我对孤立的理解。
  • 我不明白该声明及其应用方式。我们可以谈谈 gitter 吗?

标签: postgresql spring-boot spring-data-jpa jhipster spring-boot-test


【解决方案1】:

正如@gaël-marziou 所说 默认情况下,JHipster 生成的测试带有 @Transactional 注释,因此数据修改被回滚。 您应该为 tetMethod 注释 @Commit 以防止它被 rollback

【讨论】:

  • 是的,在这点上他是对的。但即使没有事务和调用提交,也没有实际数据写入数据库。只有hibernate会承认它。我对 Java/Spring 相当陌生,并且来自 Python/Rails,我希望数据实际上会写入 DB,这样我就可以运行本机查询。事实并非如此。你是说我的理解有误?
  • 是的,没有@Transactional 它应该保存数据,可能有一些情况会使您的测试事务化(超类,一些xml配置我不确定)?!我也这样做了,试过flush,update, save!我的类注释了@Transactional,方法注释了@Commit,在此测试方法将数据保存在db中之后。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-23
  • 2020-07-02
  • 1970-01-01
  • 1970-01-01
  • 2021-03-10
  • 1970-01-01
  • 2013-04-25
相关资源
最近更新 更多