在 Grails 3.3.1 单元测试中记录 SQL

Logging SQL in Grails 3.3.1 unit tests

在 Grails 3.3.1 中进行 运行 单元测试时,如何查看 SQL 日志记录?当 运行 应用程序正常使用以下设置时,我可以查看 SQL 日志记录。

application.yml

    hibernate:
        format_sql: true


    test:
        dataSource:
              logSql: true
    development:
        dataSource:
              logSql: true

logback.groovy

logger 'org.hibernate.type.descriptor.sql.BasicBinder', TRACE, ['STDOUT']
logger 'org.hibernate.SQL', TRACE, ['STDOUT']

在 运行 单元测试时不应该访问数据库。应该模拟所有外部交互,如数据库等。

集成和功能测试更适合验证向数据库发送了哪些查询。

documentation

我需要在单元测试中使用 HibernateSpec 而不仅仅是规范。然后使用上面的 SQL 日志记录就可以了。

class MyServiceSpec extends HibernateSpec implements ServiceUnitTest<MyService>