Şu satırı dahil ederiz
import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
Not : Bu anotasyon yerine test için @DataJpaTest tercih edilebilir.
replace Alanı
Testlerin bellekteki bir veri tabanı yerine gerçek veri tabanında koşmasını sağlar. Açıklaması şöyle
In-memory embedded databases generally work well for tests since they are fast and don’t require any developer installation. If, however, you prefer to run tests against a real database you can use the @AutoConfigureTestDatabase annotation
Örnek
Şöyle yaparız
@DataJpaTest
@AutoConfigureTestDatabase(replace=Replace.NONE)
ÖrnekEğer veri tabanını bellekte değil de TestContainers içinde istersek şöyle yaparız
Açıklaması şöyle@DataJpaTest@Testcontainers@ActiveProfiles("test-containers")@AutoConfigureTestDatabase(replace = Replace.NONE)class PersonRepositoryTestContainers {@Autowiredprivate PersonRepository personRepository;@Testvoid shouldReturnAlLastNames() {personRepository.saveAndFlush(new Person().setFirstName("John").setLastName("Brown"));personRepository.saveAndFlush(new Person().setFirstName("Kyle").setLastName("Green"));personRepository.saveAndFlush(new Person().setFirstName("Paul").setLastName("Brown"));assertEquals(Set.of("Brown", "Green"), personRepository.findAllLastNames());}}
@DataJpaTest is annotated with @AutoConfigureTestDatabase itself. This annotation replaces any data source with the H2 instance by default. So, we need to override this behavior by adding replace=Replace.NONE property.Yani aslında şöyle yapmanın bir anlamı yok
@DataJpaTest
@AutoConfigureTestDatabase(replace=Replace.NONE,
connection = EmbeddedDatabaseConnection.H2)