boardbloke opened a new issue, #14920: URL: https://github.com/apache/grails-core/issues/14920
### Feature description If we run a Grails application the OISV pattern means that we always have a HibernateSession associated with the thread. INSERT and SELECT calls inside a service class that are not marked @Transactional will work because a transaction is not mandatory. For an INSERT you can call domainObject.save() and that will not complain, but if you call DomainObject.save(flush:true) it will complain that you need to have a transaction. So far so good. However in an integration test if you do not have the @Rollabck annotation you have neither a Session nor a Transaction. If in an integration test you call an application method that does a SELECT - i.e. something that works in a running application - the integration test will fail with "No HibernateSession bound to thread. If on the other hand, if you add a @Rollback annotation to the test, that provides a session, but also starts a transaction. In that case a service method in the application that does not have @Transaction, but does DomainObject.save(flush:true) will fail in the application at runtime, but succeed in the integration test - because there is a transaction provided by the test. So - as far as I am aware - its not immediately easy to have an integration test that runs application code with the same transactional context that the application has. Depending on whether you add @Rollback or not you can get tests that fail when thy should pass and vice versa. Best I could come up with is to not have @Rollback on the integration test and spray a lot of `DomainObject.withNewSession { test code here}` into the test - but that is horrible if using Spock. It would be nice if by default the integration test bound a HIbernateSession to the test thread - i.e. provide a transaction context that aligns with the application. If not by default then perhaps as an annotation @WithSession - or similar -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: notifications-unsubscr...@grails.apache.org.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org