Bird
Raised Fist0
Spring Bootframework~5 mins

@DataJpaTest for repository testing in Spring Boot - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of the @DataJpaTest annotation in Spring Boot?

@DataJpaTest is used to test JPA repositories. It sets up an in-memory database and configures Spring Data JPA components for fast and focused testing of database layers.

Click to reveal answer
beginner
Which database does @DataJpaTest use by default during testing?

By default, @DataJpaTest uses an embedded in-memory database like H2, HSQL, or Derby to run tests quickly without affecting the real database.

Click to reveal answer
intermediate
Does @DataJpaTest load the full Spring Boot application context?

No, @DataJpaTest loads only the JPA-related components, not the full application context. This makes tests faster and more focused on repository behavior.

Click to reveal answer
intermediate
How can you customize the database used by @DataJpaTest?

You can customize the database by adding a test profile with your own datasource or by using @AutoConfigureTestDatabase to replace or disable the embedded database.

Click to reveal answer
beginner
What happens to data after a test annotated with @DataJpaTest finishes?

Data is rolled back after each test method by default, so tests do not affect each other and the database stays clean.

Click to reveal answer
What does @DataJpaTest primarily configure for testing?
AJPA repositories and in-memory database
BFull web server and controllers
CSecurity and authentication
DExternal API clients
Which of these is true about @DataJpaTest?
AIt loads the entire Spring Boot application context.
BIt disables JPA repositories.
CIt rolls back transactions after each test.
DIt requires a real external database.
How can you prevent @DataJpaTest from using the embedded database?
AUse <code>@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)</code>
BAdd <code>@SpringBootTest</code> annotation
CSet <code>spring.jpa.hibernate.ddl-auto=none</code>
DUse <code>@EnableWebMvc</code>
Which annotation is commonly used together with @DataJpaTest to inject repository beans?
A<code>@ComponentScan</code>
B<code>@Autowired</code>
C<code>@Service</code>
D<code>@Controller</code>
What is the main benefit of using @DataJpaTest over @SpringBootTest for repository tests?
AAutomatically generates test data
BRuns tests on production database
CIncludes UI components for testing
DFaster tests by loading only JPA components
Explain how @DataJpaTest helps in testing Spring Data JPA repositories.
Think about what parts of the app it loads and how it handles data.
You got /4 concepts.
    Describe how to customize the database used in @DataJpaTest and why you might want to do that.
    Consider when embedded databases might not be enough.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of using @DataJpaTest in Spring Boot?
      easy
      A. To test JPA repositories with an in-memory database setup
      B. To test the entire Spring Boot application including web layer
      C. To configure security settings for the application
      D. To run integration tests with external APIs

      Solution

      1. Step 1: Understand the role of @DataJpaTest

        @DataJpaTest is designed to test only the JPA repository layer, not the full application.
      2. Step 2: Recognize the default setup

        It sets up an in-memory database automatically to test repository methods quickly and in isolation.
      3. Final Answer:

        To test JPA repositories with an in-memory database setup -> Option A
      4. Quick Check:

        @DataJpaTest = repository testing with in-memory DB [OK]
      Hint: Remember @DataJpaTest focuses only on JPA repositories [OK]
      Common Mistakes:
      • Thinking it tests the full application context
      • Confusing it with @SpringBootTest
      • Assuming it configures web or security layers
      2. Which of the following is the correct way to annotate a test class to use @DataJpaTest?
      easy
      A. @RepositoryTest public class MyRepositoryTest {}
      B. @SpringBootTest public class MyRepositoryTest {}
      C. @DataJpaTest public class MyRepositoryTest {}
      D. @EnableJpaRepositories public class MyRepositoryTest {}

      Solution

      1. Step 1: Identify the correct annotation for JPA repository testing

        @DataJpaTest is the dedicated annotation for testing JPA repositories.
      2. Step 2: Check the syntax usage

        The annotation is placed directly above the test class declaration as shown in @DataJpaTest public class MyRepositoryTest {}.
      3. Final Answer:

        @DataJpaTest public class MyRepositoryTest {} -> Option C
      4. Quick Check:

        Correct annotation usage = @DataJpaTest public class MyRepositoryTest {} [OK]
      Hint: Use @DataJpaTest directly on the test class [OK]
      Common Mistakes:
      • Using @SpringBootTest instead of @DataJpaTest
      • Using non-existent @RepositoryTest annotation
      • Confusing configuration annotations with test annotations
      3. Given the following repository test code using @DataJpaTest, what will be the output of System.out.println(users.size())?
      @DataJpaTest
      public class UserRepositoryTest {
        @Autowired
        private UserRepository userRepository;
      
        @Test
        void testSaveAndFind() {
          User user = new User(null, "Alice");
          userRepository.save(user);
          List<User> users = userRepository.findAll();
          System.out.println(users.size());
        }
      }
      medium
      A. 1
      B. 0
      C. NullPointerException
      D. Compilation error

      Solution

      1. Step 1: Analyze the test method behavior

        The test saves one User entity to the repository, then fetches all users.
      2. Step 2: Understand @DataJpaTest behavior

        @DataJpaTest uses an in-memory database, so the saved user is stored and retrievable within the test.
      3. Final Answer:

        1 -> Option A
      4. Quick Check:

        Saved one user, findAll returns list size 1 [OK]
      Hint: Saved entities appear in findAll during @DataJpaTest [OK]
      Common Mistakes:
      • Assuming the database is empty after save
      • Expecting NullPointerException due to missing ID
      • Confusing @DataJpaTest with no database setup
      4. You wrote a test with @DataJpaTest but it fails with a BeanCreationException related to missing DataSource. What is the most likely cause?
      medium
      A. You did not annotate the test class with @SpringBootTest
      B. You forgot to include an in-memory database dependency like H2
      C. You used @DataJpaTest on a non-repository class
      D. You did not add @Autowired to the repository field

      Solution

      1. Step 1: Understand the error cause

        BeanCreationException for DataSource usually means Spring cannot find a database connection.
      2. Step 2: Check dependencies for @DataJpaTest

        @DataJpaTest uses an in-memory database by default, but you must include a dependency like H2 in your project.
      3. Final Answer:

        You forgot to include an in-memory database dependency like H2 -> Option B
      4. Quick Check:

        Missing DB dependency causes DataSource error [OK]
      Hint: Add H2 dependency for @DataJpaTest to create DataSource [OK]
      Common Mistakes:
      • Confusing @DataJpaTest with @SpringBootTest requirement
      • Ignoring missing database dependencies
      • Assuming @Autowired omission causes DataSource error
      5. You want to test a repository method that uses a custom query with @Query annotation. How can you ensure @DataJpaTest loads this method correctly and your test verifies it?
      hard
      A. Add @EnableJpaRepositories to the test class to enable custom queries
      B. Use @SpringBootTest instead because @DataJpaTest does not support custom queries
      C. Manually configure the EntityManager in the test to run the query
      D. Write a test method in a @DataJpaTest class that calls the custom query method and asserts the result

      Solution

      1. Step 1: Understand @DataJpaTest capabilities

        @DataJpaTest loads repository beans including custom query methods annotated with @Query.
      2. Step 2: Write a test method to call and assert the custom query

        Simply call the repository method in your test and check the returned data matches expectations.
      3. Final Answer:

        Write a test method in a @DataJpaTest class that calls the custom query method and asserts the result -> Option D
      4. Quick Check:

        @DataJpaTest supports custom queries; test them directly [OK]
      Hint: Test custom queries directly in @DataJpaTest methods [OK]
      Common Mistakes:
      • Thinking @DataJpaTest cannot run custom queries
      • Overcomplicating with manual EntityManager setup
      • Adding unnecessary annotations like @EnableJpaRepositories
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard