diff --git a/persistence-modules/spring-data-jpa-enterprise/pom.xml b/persistence-modules/spring-data-jpa-enterprise/pom.xml
index 16294cd3cc..6bd89032fa 100644
--- a/persistence-modules/spring-data-jpa-enterprise/pom.xml
+++ b/persistence-modules/spring-data-jpa-enterprise/pom.xml
@@ -54,6 +54,11 @@
spring-security-test
test
+
+ org.postgresql
+ postgresql
+ runtime
+
org.testcontainers
@@ -61,6 +66,12 @@
${testcontainers.version}
test
+
+ org.testcontainers
+ junit-jupiter
+ ${testcontainers.version}
+ test
+
@@ -87,7 +98,7 @@
1.3.1.Final
- 1.17.3
+ 1.19.1
\ No newline at end of file
diff --git a/persistence-modules/spring-data-jpa-enterprise/src/main/resources/application.properties b/persistence-modules/spring-data-jpa-enterprise/src/main/resources/application.properties
index 0ca1872207..a6733dc397 100644
--- a/persistence-modules/spring-data-jpa-enterprise/src/main/resources/application.properties
+++ b/persistence-modules/spring-data-jpa-enterprise/src/main/resources/application.properties
@@ -12,4 +12,5 @@ spring.datasource.url=jdbc:h2:mem:baeldung
spring.jpa.show-sql=false
#hibernate.dialect=org.hibernate.dialect.H2Dialect
+spring.jpa.hibernate.ddl-auto= create
spring.jpa.properties.hibernate.id.new_generator_mappings=false
\ No newline at end of file
diff --git a/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/boot/daos/UserRepositoryCommon.java b/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/boot/daos/UserRepositoryCommon.java
index e8841d921c..45be598153 100644
--- a/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/boot/daos/UserRepositoryCommon.java
+++ b/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/boot/daos/UserRepositoryCommon.java
@@ -1,8 +1,9 @@
package com.baeldung.boot.daos;
-import org.junit.After;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.dao.InvalidDataAccessApiUsageException;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
@@ -25,6 +26,7 @@ import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.junit.Assert.*;
+@SpringBootTest
public class UserRepositoryCommon {
final String USER_EMAIL = "email@example.com";
@@ -274,7 +276,7 @@ public class UserRepositoryCommon {
.getName()).isEqualTo(USER_NAME_ADAM);
}
- @Test(expected = PropertyReferenceException.class)
+ @Test
public void givenUsersInDB_WhenFindAllSortWithFunction_ThenThrowException() {
userRepository.save(new User(USER_NAME_ADAM, LocalDate.now(), USER_EMAIL, ACTIVE_STATUS));
userRepository.save(new User(USER_NAME_PETER, LocalDate.now(), USER_EMAIL2, ACTIVE_STATUS));
@@ -282,10 +284,7 @@ public class UserRepositoryCommon {
userRepository.findAll(Sort.by(Sort.Direction.ASC, "name"));
- List usersSortByNameLength = userRepository.findAll(Sort.by("LENGTH(name)"));
-
- assertThat(usersSortByNameLength.get(0)
- .getName()).isEqualTo(USER_NAME_ADAM);
+ assertThrows(PropertyReferenceException.class, () -> userRepository.findAll(Sort.by("LENGTH(name)")));
}
@Test
@@ -556,7 +555,7 @@ public class UserRepositoryCommon {
assertEquals(0, nativeQuery.getResultList().get(0));
}
- @After
+ @AfterEach
public void cleanUp() {
userRepository.deleteAll();
}
diff --git a/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/boot/daos/UserRepositoryIntegrationTest.java b/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/boot/daos/UserRepositoryIntegrationTest.java
index 1b1d264574..c4d9d65746 100644
--- a/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/boot/daos/UserRepositoryIntegrationTest.java
+++ b/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/boot/daos/UserRepositoryIntegrationTest.java
@@ -2,11 +2,10 @@ package com.baeldung.boot.daos;
import com.baeldung.boot.Application;
import com.baeldung.boot.domain.User;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+
+import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate;
@@ -16,7 +15,6 @@ import static org.assertj.core.api.Assertions.assertThat;
/**
* Created by adam.
*/
-@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
@DirtiesContext
public class UserRepositoryIntegrationTest extends UserRepositoryCommon {
diff --git a/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/boot/daos/UserRepositoryTCAutoLiveTest.java b/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/boot/daos/UserRepositoryTCAutoLiveTest.java
index 99eabc8271..056b3cea28 100644
--- a/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/boot/daos/UserRepositoryTCAutoLiveTest.java
+++ b/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/boot/daos/UserRepositoryTCAutoLiveTest.java
@@ -3,14 +3,15 @@ package com.baeldung.boot.daos;
import com.baeldung.boot.Application;
import com.baeldung.boot.domain.User;
import com.baeldung.util.BaeldungPostgresqlContainer;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+
+import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Transactional;
import org.testcontainers.containers.PostgreSQLContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
import java.time.LocalDate;
@@ -19,12 +20,12 @@ import static org.assertj.core.api.Assertions.assertThat;
/**
* Created by adam.
*/
-@RunWith(SpringRunner.class)
+@Testcontainers
@SpringBootTest(classes = Application.class)
@ActiveProfiles({"tc", "tc-auto"})
public class UserRepositoryTCAutoLiveTest extends UserRepositoryCommon {
- @ClassRule
+ @Container
public static PostgreSQLContainer postgreSQLContainer = BaeldungPostgresqlContainer.getInstance();
@Test
diff --git a/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/boot/daos/UserRepositoryTCJdbcLiveTest.java b/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/boot/daos/UserRepositoryTCJdbcLiveTest.java
index c976590966..f4af7284bd 100644
--- a/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/boot/daos/UserRepositoryTCJdbcLiveTest.java
+++ b/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/boot/daos/UserRepositoryTCJdbcLiveTest.java
@@ -1,21 +1,21 @@
package com.baeldung.boot.daos;
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.time.LocalDate;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.ActiveProfiles;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
+import org.springframework.transaction.annotation.Transactional;
+
import com.baeldung.boot.Application;
import com.baeldung.boot.daos.user.UserRepository;
import com.baeldung.boot.domain.User;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.junit4.SpringRunner;
-import org.springframework.transaction.annotation.Transactional;
-import java.time.LocalDate;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-@RunWith(SpringRunner.class)
@ActiveProfiles("tc-jdbc")
@SpringBootTest(classes = Application.class)
public class UserRepositoryTCJdbcLiveTest {
diff --git a/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/boot/daos/UserRepositoryTCLiveTest.java b/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/boot/daos/UserRepositoryTCLiveTest.java
index be8843c166..33f4bbeeff 100644
--- a/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/boot/daos/UserRepositoryTCLiveTest.java
+++ b/persistence-modules/spring-data-jpa-enterprise/src/test/java/com/baeldung/boot/daos/UserRepositoryTCLiveTest.java
@@ -1,33 +1,29 @@
package com.baeldung.boot.daos;
-import com.baeldung.boot.Application;
-import com.baeldung.boot.domain.User;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.util.TestPropertyValues;
-import org.springframework.context.ApplicationContextInitializer;
-import org.springframework.context.ConfigurableApplicationContext;
-import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringRunner;
-import org.springframework.transaction.annotation.Transactional;
-import org.testcontainers.containers.PostgreSQLContainer;
-
-import java.time.LocalDate;
-
import static org.assertj.core.api.Assertions.assertThat;
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = Application.class)
+import java.time.LocalDate;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.ActiveProfiles;
+import org.springframework.test.context.DynamicPropertyRegistry;
+import org.springframework.test.context.DynamicPropertySource;
+import org.springframework.transaction.annotation.Transactional;
+import org.testcontainers.containers.PostgreSQLContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+
+import com.baeldung.boot.domain.User;
+
+@Testcontainers
+@SpringBootTest
@ActiveProfiles("tc")
-@ContextConfiguration(initializers = {UserRepositoryTCLiveTest.Initializer.class})
public class UserRepositoryTCLiveTest extends UserRepositoryCommon {
- @ClassRule
+ @Container
public static PostgreSQLContainer postgreSQLContainer = new PostgreSQLContainer("postgres:11.1")
- .withDatabaseName("integration-tests-db")
+ .withDatabaseName("integration-tests-db")
.withUsername("sa")
.withPassword("sa");
@@ -45,14 +41,10 @@ public class UserRepositoryTCLiveTest extends UserRepositoryCommon {
assertThat(updatedUsersSize).isEqualTo(2);
}
- static class Initializer
- implements ApplicationContextInitializer {
- public void initialize(ConfigurableApplicationContext configurableApplicationContext) {
- TestPropertyValues.of(
- "spring.datasource.url=" + postgreSQLContainer.getJdbcUrl(),
- "spring.datasource.username=" + postgreSQLContainer.getUsername(),
- "spring.datasource.password=" + postgreSQLContainer.getPassword()
- ).applyTo(configurableApplicationContext.getEnvironment());
- }
+ @DynamicPropertySource
+ static void registerPgProperties(DynamicPropertyRegistry registry) {
+ registry.add("spring.datasource.url", postgreSQLContainer::getJdbcUrl);
+ registry.add("spring.datasource.username", postgreSQLContainer::getUsername);
+ registry.add("spring.datasource.password", postgreSQLContainer::getPassword);
}
}