Merge pull request #28086 from polarbear567

* pr/28086:
  Polish "Clarify use of @AutoConfigureTestEntityManager"
  Clarify use of @AutoConfigureTestEntityManager

Closes gh-28086
2.4.x
Stephane Nicoll 3 years ago
commit 218bed1f8e

@ -7634,7 +7634,11 @@ If that is not what you want, you can disable transaction management for a test
---- ----
Data JPA tests may also inject a {spring-boot-test-autoconfigure-module-code}/orm/jpa/TestEntityManager.java[`TestEntityManager`] bean, which provides an alternative to the standard JPA `EntityManager` that is specifically designed for tests. Data JPA tests may also inject a {spring-boot-test-autoconfigure-module-code}/orm/jpa/TestEntityManager.java[`TestEntityManager`] bean, which provides an alternative to the standard JPA `EntityManager` that is specifically designed for tests.
If you want to use `TestEntityManager` outside of `@DataJpaTest` instances, you can also use the `@AutoConfigureTestEntityManager` annotation.
TIP: `TestEntityManager` can also be auto-configured to any of your Spring-based test class by adding `@AutoConfigureTestEntityManager`.
When doing so, make sure that your test is running in a transaction, for instance by adding `@Transactional` on your test class or method.
A `JdbcTemplate` is also available if you need that. A `JdbcTemplate` is also available if you need that.
The following example shows the `@DataJpaTest` annotation in use: The following example shows the `@DataJpaTest` annotation in use:

@ -1,5 +1,5 @@
/* /*
* Copyright 2012-2019 the original author or authors. * Copyright 2012-2021 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -234,7 +234,7 @@ public class TestEntityManager {
*/ */
public final EntityManager getEntityManager() { public final EntityManager getEntityManager() {
EntityManager manager = EntityManagerFactoryUtils.getTransactionalEntityManager(this.entityManagerFactory); EntityManager manager = EntityManagerFactoryUtils.getTransactionalEntityManager(this.entityManagerFactory);
Assert.state(manager != null, "No transactional EntityManager found"); Assert.state(manager != null, "No transactional EntityManager found, is your test running in a transactional?");
return manager; return manager;
} }

Loading…
Cancel
Save