diff --git a/muyun-platform/src/test/java/net/ximatai/muyun/spring/platform/audit/RuntimeAuditRecordRepositoryIT.java b/muyun-platform/src/test/java/net/ximatai/muyun/spring/platform/audit/RuntimeAuditRecordRepositoryIT.java index be4d2b09e..abc630b79 100644 --- a/muyun-platform/src/test/java/net/ximatai/muyun/spring/platform/audit/RuntimeAuditRecordRepositoryIT.java +++ b/muyun-platform/src/test/java/net/ximatai/muyun/spring/platform/audit/RuntimeAuditRecordRepositoryIT.java @@ -7,6 +7,7 @@ import net.ximatai.muyun.spring.ability.event.RuntimeEventType; import net.ximatai.muyun.spring.ability.event.RuntimeMutationSource; import net.ximatai.muyun.spring.common.exception.PlatformException; +import net.ximatai.muyun.spring.platform.support.PlatformPostgresIntegrationTest; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringBootConfiguration; @@ -18,9 +19,6 @@ import org.springframework.test.context.DynamicPropertySource; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.support.TransactionTemplate; -import org.testcontainers.containers.PostgreSQLContainer; -import org.testcontainers.junit.jupiter.Container; -import org.testcontainers.junit.jupiter.Testcontainers; import javax.sql.DataSource; import java.time.Instant; @@ -29,11 +27,8 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; -@Testcontainers(disabledWithoutDocker = true) @SpringBootTest(classes = RuntimeAuditRecordRepositoryIT.TestApplication.class) -class RuntimeAuditRecordRepositoryIT { - @Container - static final PostgreSQLContainer postgres = new PostgreSQLContainer<>("postgres:16-alpine"); +class RuntimeAuditRecordRepositoryIT extends PlatformPostgresIntegrationTest { @DynamicPropertySource static void databaseProperties(DynamicPropertyRegistry registry) { diff --git a/muyun-platform/src/test/java/net/ximatai/muyun/spring/platform/code/CodeRepositoryIT.java b/muyun-platform/src/test/java/net/ximatai/muyun/spring/platform/code/CodeRepositoryIT.java index 3cbe470fa..14a9a2b79 100644 --- a/muyun-platform/src/test/java/net/ximatai/muyun/spring/platform/code/CodeRepositoryIT.java +++ b/muyun-platform/src/test/java/net/ximatai/muyun/spring/platform/code/CodeRepositoryIT.java @@ -5,6 +5,7 @@ import net.ximatai.muyun.database.spring.boot.JdbiConfigurer; import net.ximatai.muyun.database.spring.boot.sql.annotation.EnableMuYunRepositories; import net.ximatai.muyun.spring.common.tenant.TenantContext; +import net.ximatai.muyun.spring.platform.support.PlatformPostgresIntegrationTest; import org.jdbi.v3.core.Jdbi; import org.jdbi.v3.core.argument.AbstractArgumentFactory; import org.jdbi.v3.core.argument.Argument; @@ -20,9 +21,6 @@ import org.springframework.test.context.DynamicPropertySource; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.support.TransactionTemplate; -import org.testcontainers.containers.PostgreSQLContainer; -import org.testcontainers.junit.jupiter.Container; -import org.testcontainers.junit.jupiter.Testcontainers; import javax.sql.DataSource; import java.math.BigInteger; @@ -40,11 +38,8 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; -@Testcontainers(disabledWithoutDocker = true) @SpringBootTest(classes = CodeRepositoryIT.TestApplication.class) -class CodeRepositoryIT { - @Container - static final PostgreSQLContainer postgres = new PostgreSQLContainer<>("postgres:16-alpine"); +class CodeRepositoryIT extends PlatformPostgresIntegrationTest { @DynamicPropertySource static void databaseProperties(DynamicPropertyRegistry registry) { diff --git a/muyun-platform/src/test/java/net/ximatai/muyun/spring/platform/code/DynamicCodeCoordinatorRepositoryIT.java b/muyun-platform/src/test/java/net/ximatai/muyun/spring/platform/code/DynamicCodeCoordinatorRepositoryIT.java index 04fd22196..a65b6b4c2 100644 --- a/muyun-platform/src/test/java/net/ximatai/muyun/spring/platform/code/DynamicCodeCoordinatorRepositoryIT.java +++ b/muyun-platform/src/test/java/net/ximatai/muyun/spring/platform/code/DynamicCodeCoordinatorRepositoryIT.java @@ -14,6 +14,7 @@ import net.ximatai.muyun.spring.common.platform.EntityCapability; import net.ximatai.muyun.spring.common.platform.PlatformAction; import net.ximatai.muyun.spring.common.tenant.TenantContext; +import net.ximatai.muyun.spring.platform.support.PlatformPostgresIntegrationTest; import net.ximatai.muyun.spring.dynamic.metadata.EntityDefinition; import net.ximatai.muyun.spring.dynamic.metadata.EntityRelationDefinition; import net.ximatai.muyun.spring.dynamic.metadata.FieldDefinition; @@ -41,9 +42,6 @@ import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.annotation.EnableTransactionManagement; import org.springframework.transaction.support.TransactionTemplate; -import org.testcontainers.containers.PostgreSQLContainer; -import org.testcontainers.junit.jupiter.Container; -import org.testcontainers.junit.jupiter.Testcontainers; import javax.sql.DataSource; import java.math.BigInteger; @@ -67,14 +65,10 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.mockito.Mockito.mock; -@Testcontainers(disabledWithoutDocker = true) @SpringBootTest(classes = DynamicCodeCoordinatorRepositoryIT.TestApplication.class) -class DynamicCodeCoordinatorRepositoryIT { +class DynamicCodeCoordinatorRepositoryIT extends PlatformPostgresIntegrationTest { private static final String TENANT_ID = "tenant-code"; - @Container - static final PostgreSQLContainer postgres = new PostgreSQLContainer<>("postgres:16-alpine"); - @DynamicPropertySource static void databaseProperties(DynamicPropertyRegistry registry) { registry.add("muyun.database.default-schema", () -> "public"); diff --git a/muyun-platform/src/test/java/net/ximatai/muyun/spring/platform/metadata/FieldSpecRepositoryIT.java b/muyun-platform/src/test/java/net/ximatai/muyun/spring/platform/metadata/FieldSpecRepositoryIT.java index 03ffa9d27..85ab26407 100644 --- a/muyun-platform/src/test/java/net/ximatai/muyun/spring/platform/metadata/FieldSpecRepositoryIT.java +++ b/muyun-platform/src/test/java/net/ximatai/muyun/spring/platform/metadata/FieldSpecRepositoryIT.java @@ -4,6 +4,7 @@ import net.ximatai.muyun.database.core.orm.Criteria; import net.ximatai.muyun.spring.dynamic.metadata.DynamicQueryOperator; import net.ximatai.muyun.spring.dynamic.metadata.FieldType; +import net.ximatai.muyun.spring.platform.support.PlatformPostgresIntegrationTest; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringBootConfiguration; @@ -13,9 +14,6 @@ import org.springframework.context.annotation.Bean; import org.springframework.test.context.DynamicPropertyRegistry; import org.springframework.test.context.DynamicPropertySource; -import org.testcontainers.containers.PostgreSQLContainer; -import org.testcontainers.junit.jupiter.Container; -import org.testcontainers.junit.jupiter.Testcontainers; import javax.sql.DataSource; import java.util.List; @@ -24,11 +22,8 @@ import static org.assertj.core.api.Assertions.assertThat; -@Testcontainers(disabledWithoutDocker = true) @SpringBootTest(classes = FieldSpecRepositoryIT.TestApplication.class) -class FieldSpecRepositoryIT { - @Container - static final PostgreSQLContainer postgres = new PostgreSQLContainer<>("postgres:16-alpine"); +class FieldSpecRepositoryIT extends PlatformPostgresIntegrationTest { @DynamicPropertySource static void databaseProperties(DynamicPropertyRegistry registry) { diff --git a/muyun-platform/src/test/java/net/ximatai/muyun/spring/platform/runtime/PlatformDynamicRuntimeRefresherIT.java b/muyun-platform/src/test/java/net/ximatai/muyun/spring/platform/runtime/PlatformDynamicRuntimeRefresherIT.java index 41385a9ba..2e34a1e2c 100644 --- a/muyun-platform/src/test/java/net/ximatai/muyun/spring/platform/runtime/PlatformDynamicRuntimeRefresherIT.java +++ b/muyun-platform/src/test/java/net/ximatai/muyun/spring/platform/runtime/PlatformDynamicRuntimeRefresherIT.java @@ -57,6 +57,7 @@ import net.ximatai.muyun.spring.platform.module.PlatformModuleActionService; import net.ximatai.muyun.spring.platform.module.PlatformModuleService; import net.ximatai.muyun.spring.platform.support.TestMemoryDao; +import net.ximatai.muyun.spring.platform.support.PlatformPostgresIntegrationTest; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringBootConfiguration; @@ -66,9 +67,6 @@ import org.springframework.context.annotation.Bean; import org.springframework.test.context.DynamicPropertyRegistry; import org.springframework.test.context.DynamicPropertySource; -import org.testcontainers.containers.PostgreSQLContainer; -import org.testcontainers.junit.jupiter.Container; -import org.testcontainers.junit.jupiter.Testcontainers; import javax.sql.DataSource; @@ -77,11 +75,8 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; -@Testcontainers(disabledWithoutDocker = true) @SpringBootTest(classes = PlatformDynamicRuntimeRefresherIT.TestApplication.class) -class PlatformDynamicRuntimeRefresherIT { - @Container - static final PostgreSQLContainer postgres = new PostgreSQLContainer<>("postgres:16-alpine"); +class PlatformDynamicRuntimeRefresherIT extends PlatformPostgresIntegrationTest { @DynamicPropertySource static void databaseProperties(DynamicPropertyRegistry registry) { diff --git a/muyun-platform/src/test/java/net/ximatai/muyun/spring/platform/support/PlatformPostgresIntegrationTest.java b/muyun-platform/src/test/java/net/ximatai/muyun/spring/platform/support/PlatformPostgresIntegrationTest.java new file mode 100644 index 000000000..d913069cb --- /dev/null +++ b/muyun-platform/src/test/java/net/ximatai/muyun/spring/platform/support/PlatformPostgresIntegrationTest.java @@ -0,0 +1,14 @@ +package net.ximatai.muyun.spring.platform.support; + +import org.testcontainers.containers.PostgreSQLContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; + +/** + * 仅复用 platform Repository IT 的 PostgreSQL 进程;各测试仍维护独立 Spring 上下文和数据契约。 + */ +@Testcontainers(disabledWithoutDocker = true) +public abstract class PlatformPostgresIntegrationTest { + @Container + protected static final PostgreSQLContainer postgres = new PostgreSQLContainer<>("postgres:16-alpine"); +} diff --git a/muyun-platform/src/test/java/net/ximatai/muyun/spring/platform/ui/UserPreferenceRepositoryIT.java b/muyun-platform/src/test/java/net/ximatai/muyun/spring/platform/ui/UserPreferenceRepositoryIT.java index 17e0cbf6c..6aec4e73d 100644 --- a/muyun-platform/src/test/java/net/ximatai/muyun/spring/platform/ui/UserPreferenceRepositoryIT.java +++ b/muyun-platform/src/test/java/net/ximatai/muyun/spring/platform/ui/UserPreferenceRepositoryIT.java @@ -5,6 +5,7 @@ import net.ximatai.muyun.spring.common.identity.CurrentUser; import net.ximatai.muyun.spring.common.identity.CurrentUserContext; import net.ximatai.muyun.spring.common.tenant.TenantContext; +import net.ximatai.muyun.spring.platform.support.PlatformPostgresIntegrationTest; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringBootConfiguration; @@ -14,9 +15,6 @@ import org.springframework.context.annotation.Bean; import org.springframework.test.context.DynamicPropertyRegistry; import org.springframework.test.context.DynamicPropertySource; -import org.testcontainers.containers.PostgreSQLContainer; -import org.testcontainers.junit.jupiter.Container; -import org.testcontainers.junit.jupiter.Testcontainers; import javax.sql.DataSource; import java.util.List; @@ -28,11 +26,8 @@ import static org.assertj.core.api.Assertions.assertThat; -@Testcontainers(disabledWithoutDocker = true) @SpringBootTest(classes = UserPreferenceRepositoryIT.TestApplication.class) -class UserPreferenceRepositoryIT { - @Container - static final PostgreSQLContainer postgres = new PostgreSQLContainer<>("postgres:16-alpine"); +class UserPreferenceRepositoryIT extends PlatformPostgresIntegrationTest { @DynamicPropertySource static void databaseProperties(DynamicPropertyRegistry registry) {