From f0606e82efe934a8c871d35c9f77a5af347df427 Mon Sep 17 00:00:00 2001 From: leohelfferich Date: Wed, 9 Jul 2025 00:48:31 +0200 Subject: [PATCH 01/14] init --- .../baeldung/transactional/Application.java | 15 +++ .../com/baeldung/transactional/TestOrder.java | 21 +++++ .../transactional/TestOrderRepository.java | 8 ++ .../transactional/TestOrderService.java | 45 +++++++++ .../transactional/TestOrderServiceTest.java | 92 +++++++++++++++++++ 5 files changed, 181 insertions(+) create mode 100644 persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/Application.java create mode 100644 persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/TestOrder.java create mode 100644 persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/TestOrderRepository.java create mode 100644 persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/TestOrderService.java create mode 100644 persistence-modules/spring-boot-persistence-5/src/test/java/com/baeldung/transactional/TestOrderServiceTest.java diff --git a/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/Application.java b/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/Application.java new file mode 100644 index 000000000000..5bfc732a27f8 --- /dev/null +++ b/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/Application.java @@ -0,0 +1,15 @@ +package com.baeldung.transactional; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; + +@SpringBootApplication +@EnableJpaRepositories +public class Application { + + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } + +} \ No newline at end of file diff --git a/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/TestOrder.java b/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/TestOrder.java new file mode 100644 index 000000000000..442c153fee49 --- /dev/null +++ b/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/TestOrder.java @@ -0,0 +1,21 @@ +package com.baeldung.transactional; + +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Table; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@Entity +@Table(name = "test_order") +public class TestOrder { + + @Id + @GeneratedValue(strategy = GenerationType.SEQUENCE) + private Long id; +} diff --git a/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/TestOrderRepository.java b/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/TestOrderRepository.java new file mode 100644 index 000000000000..32dbe4b31b76 --- /dev/null +++ b/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/TestOrderRepository.java @@ -0,0 +1,8 @@ +package com.baeldung.transactional; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface TestOrderRepository extends JpaRepository { +} diff --git a/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/TestOrderService.java b/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/TestOrderService.java new file mode 100644 index 000000000000..00532c754533 --- /dev/null +++ b/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/TestOrderService.java @@ -0,0 +1,45 @@ +package com.baeldung.transactional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +class TestOrderService { + + @Autowired + private TestOrderRepository testOrderRepository; + + @Autowired + @Lazy + private TestOrderService self; + + @Transactional + public void createOrderPublic(TestOrder order) { + testOrderRepository.save(order); + throw new RuntimeException("Rollback test"); + } + + @Transactional + private void createOrderPrivate(TestOrder order) { + testOrderRepository.save(order); + //throw new RuntimeException("Rollback test"); + } + + @Transactional + void createOrderPackagePrivate(TestOrder order) { + testOrderRepository.save(order); + throw new RuntimeException("Rollback test"); + } + + @Transactional + protected void createOrderProtected(TestOrder order) { + testOrderRepository.save(order); + throw new RuntimeException("Rollback test"); + } + + public void callPrivateMethod(TestOrder order) { + self.createOrderPrivate(order); + } +} diff --git a/persistence-modules/spring-boot-persistence-5/src/test/java/com/baeldung/transactional/TestOrderServiceTest.java b/persistence-modules/spring-boot-persistence-5/src/test/java/com/baeldung/transactional/TestOrderServiceTest.java new file mode 100644 index 000000000000..acc98f5f0bd1 --- /dev/null +++ b/persistence-modules/spring-boot-persistence-5/src/test/java/com/baeldung/transactional/TestOrderServiceTest.java @@ -0,0 +1,92 @@ +package com.baeldung.transactional; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@SpringBootTest(classes = { Application.class, TestOrderServiceTest.TestOrderService2.class, TestOrderRepository.class }) +class TestOrderServiceTest { + + @Autowired + private TestOrderService2 underTest; + + @Autowired + private TestOrderRepository testOrderRepository; + + + @Service + static class TestOrderService2 { + + @Autowired + private TestOrderRepository repository; + + @Transactional + public void createOrderPublic(TestOrder order) { + repository.save(order); + throw new RuntimeException("Rollback createOrderPublic"); + } + + @Transactional + void createOrderPackagePrivate(TestOrder order) { + repository.save(order); + throw new RuntimeException("Rollback createOrderPackagePrivate"); + } + + @Transactional + protected void createOrderProtected(TestOrder order) { + repository.save(order); + throw new RuntimeException("Rollback createOrderProtected"); + } + + @Transactional + private void createOrderPrivate(TestOrder order) { + repository.save(order); + throw new RuntimeException("Rollback createOrderPrivate"); + } + + public void callPrivate(TestOrder order) { + createOrderPrivate(order); + } + } + + @Test + void givenPublicTransactionalMethod_whenCallingIt_thenShouldRollbackOnException() { + assertThat(testOrderRepository.findAll()).isEmpty(); + + assertThatThrownBy(() -> underTest.createOrderPublic(new TestOrder())).isNotNull(); + + assertThat(testOrderRepository.findAll()).isEmpty(); + } + + @Test + void givenPackagePrivateTransactionalMethod_whenCallingIt_thenShouldRollbackOnException() { + assertThat(testOrderRepository.findAll()).isEmpty(); + + assertThatThrownBy(() -> underTest.createOrderPackagePrivate(new TestOrder())).isNotNull(); + + assertThat(testOrderRepository.findAll()).isEmpty(); + } + + @Test + void givenProtectedTransactionalMethod_whenCallingIt_thenShouldRollbackOnException() { + assertThat(testOrderRepository.findAll()).isEmpty(); + + assertThatThrownBy(() -> underTest.createOrderProtected(new TestOrder())).isNotNull(); + + assertThat(testOrderRepository.findAll()).isEmpty(); + } + + @Test + void givenPrivateTransactionalMethod_whenCallingIt_thenShouldNotRollbackOnException() { + assertThat(testOrderRepository.findAll()).isEmpty(); + + assertThatThrownBy(() -> underTest.createOrderPrivate(new TestOrder())).isNotNull(); + + assertThat(testOrderRepository.findAll()).hasSize(1); + } +} From 8d69e6fe3083c731397449c88916c396962ecdac Mon Sep 17 00:00:00 2001 From: leohelfferich Date: Wed, 9 Jul 2025 22:34:07 +0200 Subject: [PATCH 02/14] test updated --- .../transactional/TestOrderService.java | 45 ------------------- .../transactional/TestOrderServiceTest.java | 16 ++++--- 2 files changed, 11 insertions(+), 50 deletions(-) delete mode 100644 persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/TestOrderService.java diff --git a/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/TestOrderService.java b/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/TestOrderService.java deleted file mode 100644 index 00532c754533..000000000000 --- a/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/TestOrderService.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.baeldung.transactional; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Lazy; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -@Service -class TestOrderService { - - @Autowired - private TestOrderRepository testOrderRepository; - - @Autowired - @Lazy - private TestOrderService self; - - @Transactional - public void createOrderPublic(TestOrder order) { - testOrderRepository.save(order); - throw new RuntimeException("Rollback test"); - } - - @Transactional - private void createOrderPrivate(TestOrder order) { - testOrderRepository.save(order); - //throw new RuntimeException("Rollback test"); - } - - @Transactional - void createOrderPackagePrivate(TestOrder order) { - testOrderRepository.save(order); - throw new RuntimeException("Rollback test"); - } - - @Transactional - protected void createOrderProtected(TestOrder order) { - testOrderRepository.save(order); - throw new RuntimeException("Rollback test"); - } - - public void callPrivateMethod(TestOrder order) { - self.createOrderPrivate(order); - } -} diff --git a/persistence-modules/spring-boot-persistence-5/src/test/java/com/baeldung/transactional/TestOrderServiceTest.java b/persistence-modules/spring-boot-persistence-5/src/test/java/com/baeldung/transactional/TestOrderServiceTest.java index acc98f5f0bd1..e2d81e6344b1 100644 --- a/persistence-modules/spring-boot-persistence-5/src/test/java/com/baeldung/transactional/TestOrderServiceTest.java +++ b/persistence-modules/spring-boot-persistence-5/src/test/java/com/baeldung/transactional/TestOrderServiceTest.java @@ -3,24 +3,25 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; +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.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -@SpringBootTest(classes = { Application.class, TestOrderServiceTest.TestOrderService2.class, TestOrderRepository.class }) +@SpringBootTest(classes = { Application.class, TestOrderServiceTest.TestOrderService.class, TestOrderRepository.class }) class TestOrderServiceTest { @Autowired - private TestOrderService2 underTest; + private TestOrderService underTest; @Autowired private TestOrderRepository testOrderRepository; - @Service - static class TestOrderService2 { + static class TestOrderService { @Autowired private TestOrderRepository repository; @@ -54,6 +55,11 @@ public void callPrivate(TestOrder order) { } } + @AfterEach + void afterEach() { + testOrderRepository.deleteAll(); + } + @Test void givenPublicTransactionalMethod_whenCallingIt_thenShouldRollbackOnException() { assertThat(testOrderRepository.findAll()).isEmpty(); @@ -85,7 +91,7 @@ void givenProtectedTransactionalMethod_whenCallingIt_thenShouldRollbackOnExcepti void givenPrivateTransactionalMethod_whenCallingIt_thenShouldNotRollbackOnException() { assertThat(testOrderRepository.findAll()).isEmpty(); - assertThatThrownBy(() -> underTest.createOrderPrivate(new TestOrder())).isNotNull(); + assertThatThrownBy(() -> underTest.callPrivate(new TestOrder())).isNotNull(); assertThat(testOrderRepository.findAll()).hasSize(1); } From 5371d137ac74d5bf23e7d81266d85954b6d37d62 Mon Sep 17 00:00:00 2001 From: leohelfferich Date: Wed, 9 Jul 2025 22:37:27 +0200 Subject: [PATCH 03/14] example code --- .../baeldung/transactional/OrderService.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/OrderService.java diff --git a/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/OrderService.java b/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/OrderService.java new file mode 100644 index 000000000000..4e86bc14084a --- /dev/null +++ b/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/OrderService.java @@ -0,0 +1,17 @@ +package com.baeldung.transactional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +public class OrderService { + + @Autowired + private TestOrderRepository orderRepository; + + @Transactional //<-- marks this method + public void createOrder(TestOrder order) { + orderRepository.save(order); + } +} From 244166494fd9344aebf55a896e004b7282096e6e Mon Sep 17 00:00:00 2001 From: leohelfferich Date: Sat, 12 Jul 2025 19:02:32 +0200 Subject: [PATCH 04/14] apply suggestions and sync with draft code --- .../baeldung/transactional/OrderService.java | 34 +++++++++- .../com/baeldung/transactional/TestOrder.java | 5 -- .../transactional/TestOrderServiceTest.java | 62 ++++--------------- 3 files changed, 43 insertions(+), 58 deletions(-) diff --git a/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/OrderService.java b/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/OrderService.java index 4e86bc14084a..8064726b3134 100644 --- a/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/OrderService.java +++ b/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/OrderService.java @@ -8,10 +8,38 @@ public class OrderService { @Autowired - private TestOrderRepository orderRepository; + private TestOrderRepository repository; - @Transactional //<-- marks this method + @Transactional public void createOrder(TestOrder order) { - orderRepository.save(order); + repository.save(order); + } + + @Transactional + public void createOrderPublic(TestOrder order) { + repository.save(order); + throw new RuntimeException("Rollback createOrderPublic"); + } + + @Transactional + void createOrderPackagePrivate(TestOrder order) { + repository.save(order); + throw new RuntimeException("Rollback createOrderPackagePrivate"); + } + + @Transactional + protected void createOrderProtected(TestOrder order) { + repository.save(order); + throw new RuntimeException("Rollback createOrderProtected"); + } + + @Transactional + private void createOrderPrivate(TestOrder order) { + repository.save(order); + throw new RuntimeException("Rollback createOrderPrivate"); + } + + public void callPrivate(TestOrder order) { + createOrderPrivate(order); } } diff --git a/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/TestOrder.java b/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/TestOrder.java index 442c153fee49..be54ac2050ac 100644 --- a/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/TestOrder.java +++ b/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/TestOrder.java @@ -6,11 +6,6 @@ import jakarta.persistence.Id; import jakarta.persistence.Table; -import lombok.Getter; -import lombok.Setter; - -@Getter -@Setter @Entity @Table(name = "test_order") public class TestOrder { diff --git a/persistence-modules/spring-boot-persistence-5/src/test/java/com/baeldung/transactional/TestOrderServiceTest.java b/persistence-modules/spring-boot-persistence-5/src/test/java/com/baeldung/transactional/TestOrderServiceTest.java index e2d81e6344b1..ed5d41e5bf91 100644 --- a/persistence-modules/spring-boot-persistence-5/src/test/java/com/baeldung/transactional/TestOrderServiceTest.java +++ b/persistence-modules/spring-boot-persistence-5/src/test/java/com/baeldung/transactional/TestOrderServiceTest.java @@ -7,92 +7,54 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.context.annotation.Lazy; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -@SpringBootTest(classes = { Application.class, TestOrderServiceTest.TestOrderService.class, TestOrderRepository.class }) +@SpringBootTest(classes = { Application.class, OrderService.class, TestOrderRepository.class }) class TestOrderServiceTest { @Autowired - private TestOrderService underTest; + private OrderService underTest; @Autowired - private TestOrderRepository testOrderRepository; - - @Service - static class TestOrderService { - - @Autowired - private TestOrderRepository repository; - - @Transactional - public void createOrderPublic(TestOrder order) { - repository.save(order); - throw new RuntimeException("Rollback createOrderPublic"); - } - - @Transactional - void createOrderPackagePrivate(TestOrder order) { - repository.save(order); - throw new RuntimeException("Rollback createOrderPackagePrivate"); - } - - @Transactional - protected void createOrderProtected(TestOrder order) { - repository.save(order); - throw new RuntimeException("Rollback createOrderProtected"); - } - - @Transactional - private void createOrderPrivate(TestOrder order) { - repository.save(order); - throw new RuntimeException("Rollback createOrderPrivate"); - } - - public void callPrivate(TestOrder order) { - createOrderPrivate(order); - } - } + private TestOrderRepository repository; @AfterEach void afterEach() { - testOrderRepository.deleteAll(); + repository.deleteAll(); } @Test void givenPublicTransactionalMethod_whenCallingIt_thenShouldRollbackOnException() { - assertThat(testOrderRepository.findAll()).isEmpty(); + assertThat(repository.findAll()).isEmpty(); assertThatThrownBy(() -> underTest.createOrderPublic(new TestOrder())).isNotNull(); - assertThat(testOrderRepository.findAll()).isEmpty(); + assertThat(repository.findAll()).isEmpty(); } @Test void givenPackagePrivateTransactionalMethod_whenCallingIt_thenShouldRollbackOnException() { - assertThat(testOrderRepository.findAll()).isEmpty(); + assertThat(repository.findAll()).isEmpty(); assertThatThrownBy(() -> underTest.createOrderPackagePrivate(new TestOrder())).isNotNull(); - assertThat(testOrderRepository.findAll()).isEmpty(); + assertThat(repository.findAll()).isEmpty(); } @Test void givenProtectedTransactionalMethod_whenCallingIt_thenShouldRollbackOnException() { - assertThat(testOrderRepository.findAll()).isEmpty(); + assertThat(repository.findAll()).isEmpty(); assertThatThrownBy(() -> underTest.createOrderProtected(new TestOrder())).isNotNull(); - assertThat(testOrderRepository.findAll()).isEmpty(); + assertThat(repository.findAll()).isEmpty(); } @Test void givenPrivateTransactionalMethod_whenCallingIt_thenShouldNotRollbackOnException() { - assertThat(testOrderRepository.findAll()).isEmpty(); + assertThat(repository.findAll()).isEmpty(); assertThatThrownBy(() -> underTest.callPrivate(new TestOrder())).isNotNull(); - assertThat(testOrderRepository.findAll()).hasSize(1); + assertThat(repository.findAll()).hasSize(1); } } From e09b651bba5e3b59d2afb8bda7b28b074b3fb1bb Mon Sep 17 00:00:00 2001 From: leohelfferich Date: Mon, 25 Aug 2025 18:32:06 +0200 Subject: [PATCH 05/14] initial --- .../before_all_global/ExampleTest.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 testing-modules/junit-5-advanced/src/test/java/com/baeldung/before_all_global/ExampleTest.java diff --git a/testing-modules/junit-5-advanced/src/test/java/com/baeldung/before_all_global/ExampleTest.java b/testing-modules/junit-5-advanced/src/test/java/com/baeldung/before_all_global/ExampleTest.java new file mode 100644 index 000000000000..109a09fa5534 --- /dev/null +++ b/testing-modules/junit-5-advanced/src/test/java/com/baeldung/before_all_global/ExampleTest.java @@ -0,0 +1,25 @@ +package com.baeldung.before_all_global; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +public class ExampleTest { + + @BeforeAll + static void setup() { + System.out.println("Execute: BeforeAll"); + // Initialize class-specific resources, e.g., a mock database + } + + @Test + void test1() { + System.out.println("Execute test 1"); + // Test logic + } + + @Test + void test2() { + System.out.println("Execute test 2"); + // Test logic + } +} \ No newline at end of file From 4d0409dc5f47c7c627159720d65496144979a625 Mon Sep 17 00:00:00 2001 From: leohelfferich Date: Mon, 25 Aug 2025 18:36:26 +0200 Subject: [PATCH 06/14] initial --- .../test/java/com/baeldung/before_all_global/ExampleTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testing-modules/junit-5-advanced/src/test/java/com/baeldung/before_all_global/ExampleTest.java b/testing-modules/junit-5-advanced/src/test/java/com/baeldung/before_all_global/ExampleTest.java index 109a09fa5534..09696736941b 100644 --- a/testing-modules/junit-5-advanced/src/test/java/com/baeldung/before_all_global/ExampleTest.java +++ b/testing-modules/junit-5-advanced/src/test/java/com/baeldung/before_all_global/ExampleTest.java @@ -8,7 +8,7 @@ public class ExampleTest { @BeforeAll static void setup() { System.out.println("Execute: BeforeAll"); - // Initialize class-specific resources, e.g., a mock database + // Initialize class-specific resources } @Test From 3a3df389ea4f76daa593cad82b64f2dd8ce5442f Mon Sep 17 00:00:00 2001 From: leohelfferich Date: Mon, 25 Aug 2025 18:38:42 +0200 Subject: [PATCH 07/14] revert --- .../baeldung/transactional/Application.java | 15 ----- .../baeldung/transactional/OrderService.java | 45 -------------- .../com/baeldung/transactional/TestOrder.java | 16 ----- .../transactional/TestOrderRepository.java | 8 --- .../transactional/TestOrderServiceTest.java | 60 ------------------- 5 files changed, 144 deletions(-) delete mode 100644 persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/Application.java delete mode 100644 persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/OrderService.java delete mode 100644 persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/TestOrder.java delete mode 100644 persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/TestOrderRepository.java delete mode 100644 persistence-modules/spring-boot-persistence-5/src/test/java/com/baeldung/transactional/TestOrderServiceTest.java diff --git a/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/Application.java b/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/Application.java deleted file mode 100644 index 5bfc732a27f8..000000000000 --- a/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/Application.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.baeldung.transactional; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.data.jpa.repository.config.EnableJpaRepositories; - -@SpringBootApplication -@EnableJpaRepositories -public class Application { - - public static void main(String[] args) { - SpringApplication.run(Application.class, args); - } - -} \ No newline at end of file diff --git a/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/OrderService.java b/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/OrderService.java deleted file mode 100644 index 8064726b3134..000000000000 --- a/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/OrderService.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.baeldung.transactional; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -@Service -public class OrderService { - - @Autowired - private TestOrderRepository repository; - - @Transactional - public void createOrder(TestOrder order) { - repository.save(order); - } - - @Transactional - public void createOrderPublic(TestOrder order) { - repository.save(order); - throw new RuntimeException("Rollback createOrderPublic"); - } - - @Transactional - void createOrderPackagePrivate(TestOrder order) { - repository.save(order); - throw new RuntimeException("Rollback createOrderPackagePrivate"); - } - - @Transactional - protected void createOrderProtected(TestOrder order) { - repository.save(order); - throw new RuntimeException("Rollback createOrderProtected"); - } - - @Transactional - private void createOrderPrivate(TestOrder order) { - repository.save(order); - throw new RuntimeException("Rollback createOrderPrivate"); - } - - public void callPrivate(TestOrder order) { - createOrderPrivate(order); - } -} diff --git a/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/TestOrder.java b/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/TestOrder.java deleted file mode 100644 index be54ac2050ac..000000000000 --- a/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/TestOrder.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.baeldung.transactional; - -import jakarta.persistence.Entity; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; -import jakarta.persistence.Table; - -@Entity -@Table(name = "test_order") -public class TestOrder { - - @Id - @GeneratedValue(strategy = GenerationType.SEQUENCE) - private Long id; -} diff --git a/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/TestOrderRepository.java b/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/TestOrderRepository.java deleted file mode 100644 index 32dbe4b31b76..000000000000 --- a/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/TestOrderRepository.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.baeldung.transactional; - -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -@Repository -public interface TestOrderRepository extends JpaRepository { -} diff --git a/persistence-modules/spring-boot-persistence-5/src/test/java/com/baeldung/transactional/TestOrderServiceTest.java b/persistence-modules/spring-boot-persistence-5/src/test/java/com/baeldung/transactional/TestOrderServiceTest.java deleted file mode 100644 index ed5d41e5bf91..000000000000 --- a/persistence-modules/spring-boot-persistence-5/src/test/java/com/baeldung/transactional/TestOrderServiceTest.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.baeldung.transactional; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatThrownBy; - -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; - -@SpringBootTest(classes = { Application.class, OrderService.class, TestOrderRepository.class }) -class TestOrderServiceTest { - - @Autowired - private OrderService underTest; - - @Autowired - private TestOrderRepository repository; - - @AfterEach - void afterEach() { - repository.deleteAll(); - } - - @Test - void givenPublicTransactionalMethod_whenCallingIt_thenShouldRollbackOnException() { - assertThat(repository.findAll()).isEmpty(); - - assertThatThrownBy(() -> underTest.createOrderPublic(new TestOrder())).isNotNull(); - - assertThat(repository.findAll()).isEmpty(); - } - - @Test - void givenPackagePrivateTransactionalMethod_whenCallingIt_thenShouldRollbackOnException() { - assertThat(repository.findAll()).isEmpty(); - - assertThatThrownBy(() -> underTest.createOrderPackagePrivate(new TestOrder())).isNotNull(); - - assertThat(repository.findAll()).isEmpty(); - } - - @Test - void givenProtectedTransactionalMethod_whenCallingIt_thenShouldRollbackOnException() { - assertThat(repository.findAll()).isEmpty(); - - assertThatThrownBy(() -> underTest.createOrderProtected(new TestOrder())).isNotNull(); - - assertThat(repository.findAll()).isEmpty(); - } - - @Test - void givenPrivateTransactionalMethod_whenCallingIt_thenShouldNotRollbackOnException() { - assertThat(repository.findAll()).isEmpty(); - - assertThatThrownBy(() -> underTest.callPrivate(new TestOrder())).isNotNull(); - - assertThat(repository.findAll()).hasSize(1); - } -} From 525e4ec7060fd3e8d788e32e70fb4d51758f83ac Mon Sep 17 00:00:00 2001 From: leohelfferich Date: Mon, 25 Aug 2025 18:40:09 +0200 Subject: [PATCH 08/14] test --- .../test/java/com/baeldung/before_all_global/ExampleTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testing-modules/junit-5-advanced/src/test/java/com/baeldung/before_all_global/ExampleTest.java b/testing-modules/junit-5-advanced/src/test/java/com/baeldung/before_all_global/ExampleTest.java index 09696736941b..d00b823af5f0 100644 --- a/testing-modules/junit-5-advanced/src/test/java/com/baeldung/before_all_global/ExampleTest.java +++ b/testing-modules/junit-5-advanced/src/test/java/com/baeldung/before_all_global/ExampleTest.java @@ -22,4 +22,4 @@ void test2() { System.out.println("Execute test 2"); // Test logic } -} \ No newline at end of file +} From 95df99e352d9e9710d4a4507d28c8b39e19d9145 Mon Sep 17 00:00:00 2001 From: leohelfferich Date: Sat, 30 Aug 2025 14:26:48 +0200 Subject: [PATCH 09/14] test --- .../DatabaseSetupExtension.java | 25 +++++++++++++++++++ .../before_all_global/ExampleTest.java | 6 ++--- .../before_all_global/ExampleTest2.java | 19 ++++++++++++++ .../GlobalDatabaseListener.java | 21 ++++++++++++++++ .../org.junit.jupiter.api.extension.Extension | 1 + ...it.platform.launcher.TestExecutionListener | 1 + .../test/resources/junit-platform.properties | 1 + 7 files changed, 71 insertions(+), 3 deletions(-) create mode 100644 testing-modules/junit-5-advanced/src/test/java/com/baeldung/before_all_global/DatabaseSetupExtension.java create mode 100644 testing-modules/junit-5-advanced/src/test/java/com/baeldung/before_all_global/ExampleTest2.java create mode 100644 testing-modules/junit-5-advanced/src/test/java/com/baeldung/before_all_global/GlobalDatabaseListener.java create mode 100644 testing-modules/junit-5-advanced/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension create mode 100644 testing-modules/junit-5-advanced/src/test/resources/META-INF/services/org.junit.platform.launcher.TestExecutionListener diff --git a/testing-modules/junit-5-advanced/src/test/java/com/baeldung/before_all_global/DatabaseSetupExtension.java b/testing-modules/junit-5-advanced/src/test/java/com/baeldung/before_all_global/DatabaseSetupExtension.java new file mode 100644 index 000000000000..d0098b63a792 --- /dev/null +++ b/testing-modules/junit-5-advanced/src/test/java/com/baeldung/before_all_global/DatabaseSetupExtension.java @@ -0,0 +1,25 @@ +package com.baeldung.before_all_global; +import org.junit.jupiter.api.extension.BeforeAllCallback; +import org.junit.jupiter.api.extension.ExtensionContext; + +public class DatabaseSetupExtension implements BeforeAllCallback, ExtensionContext.Store.CloseableResource { + + private static boolean initialized = false; + + @Override + public void beforeAll(ExtensionContext context) throws Exception { + if (!initialized) { + initialized = true; + // Global setup: Initialize database connections + System.out.println("Initializing global database connections..."); + // Example: DatabaseConnectionPool.initialize(); + } + } + + @Override + public void close() throws Throwable { + // Global teardown: Clean up resources + System.out.println("Shutting down global database connections..."); + // Example: DatabaseConnectionPool.shutdown(); + } +} diff --git a/testing-modules/junit-5-advanced/src/test/java/com/baeldung/before_all_global/ExampleTest.java b/testing-modules/junit-5-advanced/src/test/java/com/baeldung/before_all_global/ExampleTest.java index d00b823af5f0..dff50fa5cb0e 100644 --- a/testing-modules/junit-5-advanced/src/test/java/com/baeldung/before_all_global/ExampleTest.java +++ b/testing-modules/junit-5-advanced/src/test/java/com/baeldung/before_all_global/ExampleTest.java @@ -7,19 +7,19 @@ public class ExampleTest { @BeforeAll static void setup() { - System.out.println("Execute: BeforeAll"); + System.out.println("ExampleTest1 - Execute: BeforeAll"); // Initialize class-specific resources } @Test void test1() { - System.out.println("Execute test 1"); + System.out.println("ExampleTest2 - Execute test 1"); // Test logic } @Test void test2() { - System.out.println("Execute test 2"); + System.out.println("ExampleTest2 - Execute test 2"); // Test logic } } diff --git a/testing-modules/junit-5-advanced/src/test/java/com/baeldung/before_all_global/ExampleTest2.java b/testing-modules/junit-5-advanced/src/test/java/com/baeldung/before_all_global/ExampleTest2.java new file mode 100644 index 000000000000..7a20be652570 --- /dev/null +++ b/testing-modules/junit-5-advanced/src/test/java/com/baeldung/before_all_global/ExampleTest2.java @@ -0,0 +1,19 @@ +package com.baeldung.before_all_global; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +public class ExampleTest2 { + + @BeforeAll + static void setup() { + System.out.println("ExampleTest2 - Execute: BeforeAll"); + // Initialize class-specific resources + } + + @Test + void test1() { + System.out.println("ExampleTest2 - Execute test 1"); + // Test logic + } +} diff --git a/testing-modules/junit-5-advanced/src/test/java/com/baeldung/before_all_global/GlobalDatabaseListener.java b/testing-modules/junit-5-advanced/src/test/java/com/baeldung/before_all_global/GlobalDatabaseListener.java new file mode 100644 index 000000000000..58e452bd917f --- /dev/null +++ b/testing-modules/junit-5-advanced/src/test/java/com/baeldung/before_all_global/GlobalDatabaseListener.java @@ -0,0 +1,21 @@ +package com.baeldung.before_all_global; + +import org.junit.platform.launcher.TestExecutionListener; +import org.junit.platform.launcher.TestPlan; + +public class GlobalDatabaseListener implements TestExecutionListener { + + @Override + public void testPlanExecutionStarted(TestPlan testPlan) { + // Global setup + System.out.println("GlobalDatabaseListener # testPlanExecutionStarted "); + // Example: DatabaseConnectionPool.initialize(); + } + + @Override + public void testPlanExecutionFinished(TestPlan testPlan) { + // Global teardown + System.out.println("GlobalDatabaseListener # testPlanExecutionFinished"); + // Example: DatabaseConnectionPool.shutdown(); + } +} diff --git a/testing-modules/junit-5-advanced/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension b/testing-modules/junit-5-advanced/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension new file mode 100644 index 000000000000..10bba9d5f5f4 --- /dev/null +++ b/testing-modules/junit-5-advanced/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension @@ -0,0 +1 @@ +com.baeldung.before_all_global.DatabaseSetupExtension \ No newline at end of file diff --git a/testing-modules/junit-5-advanced/src/test/resources/META-INF/services/org.junit.platform.launcher.TestExecutionListener b/testing-modules/junit-5-advanced/src/test/resources/META-INF/services/org.junit.platform.launcher.TestExecutionListener new file mode 100644 index 000000000000..6f72a2e04f21 --- /dev/null +++ b/testing-modules/junit-5-advanced/src/test/resources/META-INF/services/org.junit.platform.launcher.TestExecutionListener @@ -0,0 +1 @@ +com.baeldung.before_all_global.GlobalDatabaseListener \ No newline at end of file diff --git a/testing-modules/junit-5-advanced/src/test/resources/junit-platform.properties b/testing-modules/junit-5-advanced/src/test/resources/junit-platform.properties index 42100f85da1f..4f20f5f9d09c 100644 --- a/testing-modules/junit-5-advanced/src/test/resources/junit-platform.properties +++ b/testing-modules/junit-5-advanced/src/test/resources/junit-platform.properties @@ -2,3 +2,4 @@ junit.jupiter.execution.parallel.enabled = true junit.jupiter.execution.parallel.config.strategy=dynamic junit.jupiter.execution.parallel.mode.default = concurrent junit.jupiter.execution.parallel.mode.classes.default = concurrent +junit.jupiter.extensions.autodetection.enabled = true From e670ca602b68ab3670c8e2bd96a5bf883abd6d1a Mon Sep 17 00:00:00 2001 From: leohelfferich Date: Sat, 30 Aug 2025 14:27:20 +0200 Subject: [PATCH 10/14] test --- .../com/baeldung/before_all_global/DatabaseSetupExtension.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testing-modules/junit-5-advanced/src/test/java/com/baeldung/before_all_global/DatabaseSetupExtension.java b/testing-modules/junit-5-advanced/src/test/java/com/baeldung/before_all_global/DatabaseSetupExtension.java index d0098b63a792..80fa71ae6703 100644 --- a/testing-modules/junit-5-advanced/src/test/java/com/baeldung/before_all_global/DatabaseSetupExtension.java +++ b/testing-modules/junit-5-advanced/src/test/java/com/baeldung/before_all_global/DatabaseSetupExtension.java @@ -22,4 +22,4 @@ public void close() throws Throwable { System.out.println("Shutting down global database connections..."); // Example: DatabaseConnectionPool.shutdown(); } -} +} \ No newline at end of file From b447cfc7de0ac589cfd1a208a004fe02a3bdd48c Mon Sep 17 00:00:00 2001 From: leohelfferich Date: Sat, 30 Aug 2025 14:38:38 +0200 Subject: [PATCH 11/14] move to another module --- .../com/baeldung/before_all_global/DatabaseSetupExtension.java | 0 .../test/java/com/baeldung/before_all_global/ExampleTest.java | 0 .../test/java/com/baeldung/before_all_global/ExampleTest2.java | 0 .../com/baeldung/before_all_global/GlobalDatabaseListener.java | 0 .../META-INF/services/org.junit.jupiter.api.extension.Extension | 0 .../services/org.junit.platform.launcher.TestExecutionListener | 0 .../src/test/resources/junit-platform.properties | 1 + .../src/test/resources/junit-platform.properties | 1 - 8 files changed, 1 insertion(+), 1 deletion(-) rename testing-modules/{junit-5-advanced => junit-5-advanced-3}/src/test/java/com/baeldung/before_all_global/DatabaseSetupExtension.java (100%) rename testing-modules/{junit-5-advanced => junit-5-advanced-3}/src/test/java/com/baeldung/before_all_global/ExampleTest.java (100%) rename testing-modules/{junit-5-advanced => junit-5-advanced-3}/src/test/java/com/baeldung/before_all_global/ExampleTest2.java (100%) rename testing-modules/{junit-5-advanced => junit-5-advanced-3}/src/test/java/com/baeldung/before_all_global/GlobalDatabaseListener.java (100%) rename testing-modules/{junit-5-advanced => junit-5-advanced-3}/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension (100%) rename testing-modules/{junit-5-advanced => junit-5-advanced-3}/src/test/resources/META-INF/services/org.junit.platform.launcher.TestExecutionListener (100%) create mode 100644 testing-modules/junit-5-advanced-3/src/test/resources/junit-platform.properties diff --git a/testing-modules/junit-5-advanced/src/test/java/com/baeldung/before_all_global/DatabaseSetupExtension.java b/testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before_all_global/DatabaseSetupExtension.java similarity index 100% rename from testing-modules/junit-5-advanced/src/test/java/com/baeldung/before_all_global/DatabaseSetupExtension.java rename to testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before_all_global/DatabaseSetupExtension.java diff --git a/testing-modules/junit-5-advanced/src/test/java/com/baeldung/before_all_global/ExampleTest.java b/testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before_all_global/ExampleTest.java similarity index 100% rename from testing-modules/junit-5-advanced/src/test/java/com/baeldung/before_all_global/ExampleTest.java rename to testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before_all_global/ExampleTest.java diff --git a/testing-modules/junit-5-advanced/src/test/java/com/baeldung/before_all_global/ExampleTest2.java b/testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before_all_global/ExampleTest2.java similarity index 100% rename from testing-modules/junit-5-advanced/src/test/java/com/baeldung/before_all_global/ExampleTest2.java rename to testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before_all_global/ExampleTest2.java diff --git a/testing-modules/junit-5-advanced/src/test/java/com/baeldung/before_all_global/GlobalDatabaseListener.java b/testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before_all_global/GlobalDatabaseListener.java similarity index 100% rename from testing-modules/junit-5-advanced/src/test/java/com/baeldung/before_all_global/GlobalDatabaseListener.java rename to testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before_all_global/GlobalDatabaseListener.java diff --git a/testing-modules/junit-5-advanced/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension b/testing-modules/junit-5-advanced-3/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension similarity index 100% rename from testing-modules/junit-5-advanced/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension rename to testing-modules/junit-5-advanced-3/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension diff --git a/testing-modules/junit-5-advanced/src/test/resources/META-INF/services/org.junit.platform.launcher.TestExecutionListener b/testing-modules/junit-5-advanced-3/src/test/resources/META-INF/services/org.junit.platform.launcher.TestExecutionListener similarity index 100% rename from testing-modules/junit-5-advanced/src/test/resources/META-INF/services/org.junit.platform.launcher.TestExecutionListener rename to testing-modules/junit-5-advanced-3/src/test/resources/META-INF/services/org.junit.platform.launcher.TestExecutionListener diff --git a/testing-modules/junit-5-advanced-3/src/test/resources/junit-platform.properties b/testing-modules/junit-5-advanced-3/src/test/resources/junit-platform.properties new file mode 100644 index 000000000000..25ce5c984419 --- /dev/null +++ b/testing-modules/junit-5-advanced-3/src/test/resources/junit-platform.properties @@ -0,0 +1 @@ +junit.jupiter.extensions.autodetection.enabled = true diff --git a/testing-modules/junit-5-advanced/src/test/resources/junit-platform.properties b/testing-modules/junit-5-advanced/src/test/resources/junit-platform.properties index 4f20f5f9d09c..42100f85da1f 100644 --- a/testing-modules/junit-5-advanced/src/test/resources/junit-platform.properties +++ b/testing-modules/junit-5-advanced/src/test/resources/junit-platform.properties @@ -2,4 +2,3 @@ junit.jupiter.execution.parallel.enabled = true junit.jupiter.execution.parallel.config.strategy=dynamic junit.jupiter.execution.parallel.mode.default = concurrent junit.jupiter.execution.parallel.mode.classes.default = concurrent -junit.jupiter.extensions.autodetection.enabled = true From a127e6631cd2353c07696c939d1e245a15b51cc6 Mon Sep 17 00:00:00 2001 From: leohelfferich Date: Sun, 31 Aug 2025 19:15:30 +0200 Subject: [PATCH 12/14] one more --- .../GlobalDatabaseSessionListener.java | 19 +++++++++++++++++++ ....platform.launcher.LauncherSessionListener | 1 + 2 files changed, 20 insertions(+) create mode 100644 testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before_all_global/GlobalDatabaseSessionListener.java create mode 100644 testing-modules/junit-5-advanced-3/src/test/resources/META-INF/services/org.junit.platform.launcher.LauncherSessionListener diff --git a/testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before_all_global/GlobalDatabaseSessionListener.java b/testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before_all_global/GlobalDatabaseSessionListener.java new file mode 100644 index 000000000000..5aa123994b38 --- /dev/null +++ b/testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before_all_global/GlobalDatabaseSessionListener.java @@ -0,0 +1,19 @@ +package com.baeldung.before_all_global; + +import org.junit.platform.launcher.LauncherSession; +import org.junit.platform.launcher.LauncherSessionListener; + +public class GlobalDatabaseSessionListener implements LauncherSessionListener { + + @Override + public void launcherSessionOpened(LauncherSession session) { + // Global setup before session starts + System.out.println("launcherSessionOpened"); + } + + @Override + public void launcherSessionClosed(LauncherSession session) { + // Global teardown after session ends + System.out.println("launcherSessionClosed"); + } +} \ No newline at end of file diff --git a/testing-modules/junit-5-advanced-3/src/test/resources/META-INF/services/org.junit.platform.launcher.LauncherSessionListener b/testing-modules/junit-5-advanced-3/src/test/resources/META-INF/services/org.junit.platform.launcher.LauncherSessionListener new file mode 100644 index 000000000000..bae6f8015114 --- /dev/null +++ b/testing-modules/junit-5-advanced-3/src/test/resources/META-INF/services/org.junit.platform.launcher.LauncherSessionListener @@ -0,0 +1 @@ +com.baeldung.before_all_global.GlobalDatabaseSessionListener \ No newline at end of file From e9320db51732400e8abf2c6913f9408c946830c7 Mon Sep 17 00:00:00 2001 From: leohelfferich Date: Sat, 6 Sep 2025 11:10:52 +0200 Subject: [PATCH 13/14] package name --- .../all/global}/DatabaseSetupExtension.java | 2 +- .../{before_all_global => before/all/global}/ExampleTest.java | 2 +- .../{before_all_global => before/all/global}/ExampleTest2.java | 2 +- .../all/global}/GlobalDatabaseListener.java | 2 +- .../all/global}/GlobalDatabaseSessionListener.java | 2 +- .../META-INF/services/org.junit.jupiter.api.extension.Extension | 2 +- .../org.junit.platform.launcher.LauncherSessionListener | 2 +- .../services/org.junit.platform.launcher.TestExecutionListener | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) rename testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/{before_all_global => before/all/global}/DatabaseSetupExtension.java (95%) rename testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/{before_all_global => before/all/global}/ExampleTest.java (92%) rename testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/{before_all_global => before/all/global}/ExampleTest2.java (90%) rename testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/{before_all_global => before/all/global}/GlobalDatabaseListener.java (94%) rename testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/{before_all_global => before/all/global}/GlobalDatabaseSessionListener.java (93%) diff --git a/testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before_all_global/DatabaseSetupExtension.java b/testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before/all/global/DatabaseSetupExtension.java similarity index 95% rename from testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before_all_global/DatabaseSetupExtension.java rename to testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before/all/global/DatabaseSetupExtension.java index 80fa71ae6703..691fefeb4420 100644 --- a/testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before_all_global/DatabaseSetupExtension.java +++ b/testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before/all/global/DatabaseSetupExtension.java @@ -1,4 +1,4 @@ -package com.baeldung.before_all_global; +package com.baeldung.before.all.global; import org.junit.jupiter.api.extension.BeforeAllCallback; import org.junit.jupiter.api.extension.ExtensionContext; diff --git a/testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before_all_global/ExampleTest.java b/testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before/all/global/ExampleTest.java similarity index 92% rename from testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before_all_global/ExampleTest.java rename to testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before/all/global/ExampleTest.java index dff50fa5cb0e..45c60fdcc864 100644 --- a/testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before_all_global/ExampleTest.java +++ b/testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before/all/global/ExampleTest.java @@ -1,4 +1,4 @@ -package com.baeldung.before_all_global; +package com.baeldung.before.all.global; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; diff --git a/testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before_all_global/ExampleTest2.java b/testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before/all/global/ExampleTest2.java similarity index 90% rename from testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before_all_global/ExampleTest2.java rename to testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before/all/global/ExampleTest2.java index 7a20be652570..d0c9eba45642 100644 --- a/testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before_all_global/ExampleTest2.java +++ b/testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before/all/global/ExampleTest2.java @@ -1,4 +1,4 @@ -package com.baeldung.before_all_global; +package com.baeldung.before.all.global; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; diff --git a/testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before_all_global/GlobalDatabaseListener.java b/testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before/all/global/GlobalDatabaseListener.java similarity index 94% rename from testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before_all_global/GlobalDatabaseListener.java rename to testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before/all/global/GlobalDatabaseListener.java index 58e452bd917f..850f8cd2ff1e 100644 --- a/testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before_all_global/GlobalDatabaseListener.java +++ b/testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before/all/global/GlobalDatabaseListener.java @@ -1,4 +1,4 @@ -package com.baeldung.before_all_global; +package com.baeldung.before.all.global; import org.junit.platform.launcher.TestExecutionListener; import org.junit.platform.launcher.TestPlan; diff --git a/testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before_all_global/GlobalDatabaseSessionListener.java b/testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before/all/global/GlobalDatabaseSessionListener.java similarity index 93% rename from testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before_all_global/GlobalDatabaseSessionListener.java rename to testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before/all/global/GlobalDatabaseSessionListener.java index 5aa123994b38..1fd1cfc64005 100644 --- a/testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before_all_global/GlobalDatabaseSessionListener.java +++ b/testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before/all/global/GlobalDatabaseSessionListener.java @@ -1,4 +1,4 @@ -package com.baeldung.before_all_global; +package com.baeldung.before.all.global; import org.junit.platform.launcher.LauncherSession; import org.junit.platform.launcher.LauncherSessionListener; diff --git a/testing-modules/junit-5-advanced-3/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension b/testing-modules/junit-5-advanced-3/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension index 10bba9d5f5f4..8ac4e77f9f9b 100644 --- a/testing-modules/junit-5-advanced-3/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension +++ b/testing-modules/junit-5-advanced-3/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension @@ -1 +1 @@ -com.baeldung.before_all_global.DatabaseSetupExtension \ No newline at end of file +com.baeldung.before.all.global.DatabaseSetupExtension \ No newline at end of file diff --git a/testing-modules/junit-5-advanced-3/src/test/resources/META-INF/services/org.junit.platform.launcher.LauncherSessionListener b/testing-modules/junit-5-advanced-3/src/test/resources/META-INF/services/org.junit.platform.launcher.LauncherSessionListener index bae6f8015114..177bccdc4e7f 100644 --- a/testing-modules/junit-5-advanced-3/src/test/resources/META-INF/services/org.junit.platform.launcher.LauncherSessionListener +++ b/testing-modules/junit-5-advanced-3/src/test/resources/META-INF/services/org.junit.platform.launcher.LauncherSessionListener @@ -1 +1 @@ -com.baeldung.before_all_global.GlobalDatabaseSessionListener \ No newline at end of file +com.baeldung.before.all.global.GlobalDatabaseSessionListener \ No newline at end of file diff --git a/testing-modules/junit-5-advanced-3/src/test/resources/META-INF/services/org.junit.platform.launcher.TestExecutionListener b/testing-modules/junit-5-advanced-3/src/test/resources/META-INF/services/org.junit.platform.launcher.TestExecutionListener index 6f72a2e04f21..d10d0faf42a1 100644 --- a/testing-modules/junit-5-advanced-3/src/test/resources/META-INF/services/org.junit.platform.launcher.TestExecutionListener +++ b/testing-modules/junit-5-advanced-3/src/test/resources/META-INF/services/org.junit.platform.launcher.TestExecutionListener @@ -1 +1 @@ -com.baeldung.before_all_global.GlobalDatabaseListener \ No newline at end of file +com.baeldung.before.all.global.GlobalDatabaseListener \ No newline at end of file From 2813927db985dfe07bf43c7e7b1edbc938ab667e Mon Sep 17 00:00:00 2001 From: leohelfferich Date: Sat, 6 Sep 2025 11:28:25 +0200 Subject: [PATCH 14/14] fixes --- .../before/all/global/DatabaseSetupExtension.java | 10 ++-------- .../com/baeldung/before/all/global/ExampleTest.java | 4 ++-- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before/all/global/DatabaseSetupExtension.java b/testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before/all/global/DatabaseSetupExtension.java index 691fefeb4420..344ddb2c60f8 100644 --- a/testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before/all/global/DatabaseSetupExtension.java +++ b/testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before/all/global/DatabaseSetupExtension.java @@ -1,8 +1,9 @@ package com.baeldung.before.all.global; + import org.junit.jupiter.api.extension.BeforeAllCallback; import org.junit.jupiter.api.extension.ExtensionContext; -public class DatabaseSetupExtension implements BeforeAllCallback, ExtensionContext.Store.CloseableResource { +public class DatabaseSetupExtension implements BeforeAllCallback { private static boolean initialized = false; @@ -15,11 +16,4 @@ public void beforeAll(ExtensionContext context) throws Exception { // Example: DatabaseConnectionPool.initialize(); } } - - @Override - public void close() throws Throwable { - // Global teardown: Clean up resources - System.out.println("Shutting down global database connections..."); - // Example: DatabaseConnectionPool.shutdown(); - } } \ No newline at end of file diff --git a/testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before/all/global/ExampleTest.java b/testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before/all/global/ExampleTest.java index 45c60fdcc864..d784ea93ec61 100644 --- a/testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before/all/global/ExampleTest.java +++ b/testing-modules/junit-5-advanced-3/src/test/java/com/baeldung/before/all/global/ExampleTest.java @@ -13,13 +13,13 @@ static void setup() { @Test void test1() { - System.out.println("ExampleTest2 - Execute test 1"); + System.out.println("ExampleTest1 - Execute test 1"); // Test logic } @Test void test2() { - System.out.println("ExampleTest2 - Execute test 2"); + System.out.println("ExampleTest1 - Execute test 2"); // Test logic } }