Testing 在Grails3.3.1单元测试中记录SQL

Testing 在Grails3.3.1单元测试中记录SQL,testing,grails,logging,Testing,Grails,Logging,在Grails3.3.1中运行单元测试时,如何查看SQL日志?我可以在正常运行应用程序时使用以下设置查看SQL日志记录 application.yml hibernate: format_sql: true test: dataSource: logSql: true development: dataSource: logSql: true logback.gr

在Grails3.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']

在运行单元测试时,不应点击数据库。所有外部交互(如DB等)都应模拟

集成和功能测试更适合于验证发送到数据库的查询


请参阅

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

class MyServiceSpec extends HibernateSpec implements ServiceUnitTest<MyService>
类MyServiceSpec扩展HibernateSpect实现ServiceUnitTest
我确实在必要时使用存根和模拟,但我正在测试一个执行数据库交互的服务。在单元测试中,数据库交互是使用GORM DomainUnitTest类执行的,该类用于测试,它使用内存中的数据库。对于复杂的搜索条件,它在测试中无法正常工作。这与GRAILS 8841和GRAILS 10507的问题类似,所以我很想知道实际执行的是什么。@Tabbycat您确定任何SQL都是在那里执行的,并且结果不是简单地存储在ConcurrentHashMap或类似的文件中吗?Anton-我以为它使用了SQL,但您可能是正确的。我确实发现HibernateSpect使用SQL。