java / intermediate
Snippet
Überprüfung benutzerdefinierter Abfragelogik mittels @DataJpaTest und TestEntityManager
Die Annotation @DataJpaTest deaktiviert die vollständige Initialisierung des Spring-Kontexts und fokussiert sich ausschließlich auf JPA-Komponenten. TestEntityManager dient als Alternative zum Standard-EntityManager für Slice-Tests und stellt sicher, dass Test-Entities persistiert und in die In-Memory-Datenbank geschrieben werden, bevor Repository-Abfragen geprüft werden.
snippet.java
java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@DataJpaTestclass UserRepositoryTest {@Autowiredprivate TestEntityManager entityManager;@Autowiredprivate UserRepository userRepository;@Testvoid shouldFindActiveUsersByDepartment() {User user = new User("Alice", "Engineering", true);entityManager.persistAndFlush(user);List<User> result = userRepository.findByDepartmentAndActiveTrue("Engineering");assertThat(result).hasSize(1).contains(user);}}
spring
Erklärung
1
@DataJpaTest
Konfiguriert einen fokussierten Test-Slice für JPA-Repositories und eine In-Memory-Datenbank.
2
private TestEntityManager entityManager;
Injiziert ein Hilfsmittel zur Vorbereitung von Entity-Zuständen und zum Schreiben von Änderungen in Tests.
3
entityManager.persistAndFlush(user);
Synchronisiert das transiente Testobjekt direkt in den zugrunde liegenden Persistenzkontext.