Spting Boot Testing
September 11, 2021

M04 Q44 When do you want use @DataJpaTest for? What does it auto-configure?

You want to use @DataJpaTest annotation whenever writing an Integration Test for JPA related components of your application like Entities or Repositories.

@DataJpaTest annotation configures:

  • In-memory embedded database – behavior can be disabled with @AutoConfigureTestDatabase(replace = Replace.NONE)
  • Scans and configures @Entity beans
  • Scans and configures Spring Data Repositories
  • Configures TestEntityManager
  • Does not load other components like @Component, @Service, @Controller etc.

Every @DataJpaTest is transactional by default, after each test transaction is rolled back. You can use @Transactional annotation to customize this behavior.

When using @DataJpaTest you can access TestEntityManager, which contains subset of EntityManager methods that are useful for testing.