From d57d397663f9261b79ea8f21e0e42e98776052b7 Mon Sep 17 00:00:00 2001 From: "matthaios.stavrou" Date: Mon, 1 Dec 2025 22:18:07 +0200 Subject: [PATCH 1/2] Add inline configuration support to QuarkusUnitTest --- ...activeDisabledBlockingSessionUnitTest.java | 1 - ...mpatbilityDefaultOnlyReactiveUnitTest.java | 1 - ...bilityNamedDataSourceReactiveUnitTest.java | 1 - ...ilityOnlyReactiveJDBCDisabledUnitTest.java | 1 - ...ion-unittest-onlyreactive-named.properties | 1 - ...plication-unittest-onlyreactive.properties | 1 - .../java/io/quarkus/test/QuarkusUnitTest.java | 34 +++++++++++++++++++ .../QuarkusUnitTestWithConfigurationTest.java | 28 +++++++++++++++ 8 files changed, 62 insertions(+), 6 deletions(-) delete mode 100644 extensions/hibernate-reactive/deployment/src/test/resources/application-unittest-onlyreactive-named.properties delete mode 100644 extensions/hibernate-reactive/deployment/src/test/resources/application-unittest-onlyreactive.properties create mode 100644 test-framework/junit5-internal/src/test/java/io/quarkus/test/QuarkusUnitTestWithConfigurationTest.java diff --git a/extensions/hibernate-reactive/deployment/src/test/java/io/quarkus/hibernate/reactive/compatibility/ORMReactiveCompatbilityDefaultOnlyReactiveDisabledBlockingSessionUnitTest.java b/extensions/hibernate-reactive/deployment/src/test/java/io/quarkus/hibernate/reactive/compatibility/ORMReactiveCompatbilityDefaultOnlyReactiveDisabledBlockingSessionUnitTest.java index 9cceb980edbc1..7990f3fbc98d6 100644 --- a/extensions/hibernate-reactive/deployment/src/test/java/io/quarkus/hibernate/reactive/compatibility/ORMReactiveCompatbilityDefaultOnlyReactiveDisabledBlockingSessionUnitTest.java +++ b/extensions/hibernate-reactive/deployment/src/test/java/io/quarkus/hibernate/reactive/compatibility/ORMReactiveCompatbilityDefaultOnlyReactiveDisabledBlockingSessionUnitTest.java @@ -23,7 +23,6 @@ public class ORMReactiveCompatbilityDefaultOnlyReactiveDisabledBlockingSessionUn .addAsResource("complexMultilineImports.sql", "import.sql")) .setForcedDependencies(List.of( Dependency.of("io.quarkus", "quarkus-jdbc-postgresql-deployment", Version.getVersion()))) - .withConfigurationResource("application-unittest-onlyreactive.properties") .overrideConfigKey("quarkus.hibernate-orm.schema-management.strategy", SCHEMA_MANAGEMENT_STRATEGY) .overrideConfigKey("quarkus.hibernate-orm.blocking", "false") .overrideConfigKey("quarkus.datasource.reactive", "true") diff --git a/extensions/hibernate-reactive/deployment/src/test/java/io/quarkus/hibernate/reactive/compatibility/ORMReactiveCompatbilityDefaultOnlyReactiveUnitTest.java b/extensions/hibernate-reactive/deployment/src/test/java/io/quarkus/hibernate/reactive/compatibility/ORMReactiveCompatbilityDefaultOnlyReactiveUnitTest.java index 27469dea2aa57..02e223072798a 100644 --- a/extensions/hibernate-reactive/deployment/src/test/java/io/quarkus/hibernate/reactive/compatibility/ORMReactiveCompatbilityDefaultOnlyReactiveUnitTest.java +++ b/extensions/hibernate-reactive/deployment/src/test/java/io/quarkus/hibernate/reactive/compatibility/ORMReactiveCompatbilityDefaultOnlyReactiveUnitTest.java @@ -16,7 +16,6 @@ public class ORMReactiveCompatbilityDefaultOnlyReactiveUnitTest extends Compatib .withApplicationRoot((jar) -> jar .addClasses(Hero.class) .addAsResource("complexMultilineImports.sql", "import.sql")) - .withConfigurationResource("application-unittest-onlyreactive.properties") .overrideConfigKey("quarkus.hibernate-orm.schema-management.strategy", SCHEMA_MANAGEMENT_STRATEGY) .overrideConfigKey("quarkus.datasource.reactive", "true") .overrideConfigKey("quarkus.datasource.db-kind", POSTGRES_KIND) diff --git a/extensions/hibernate-reactive/deployment/src/test/java/io/quarkus/hibernate/reactive/compatibility/ORMReactiveCompatbilityNamedDataSourceReactiveUnitTest.java b/extensions/hibernate-reactive/deployment/src/test/java/io/quarkus/hibernate/reactive/compatibility/ORMReactiveCompatbilityNamedDataSourceReactiveUnitTest.java index 0a77bd4e98c75..8c312340ece5a 100644 --- a/extensions/hibernate-reactive/deployment/src/test/java/io/quarkus/hibernate/reactive/compatibility/ORMReactiveCompatbilityNamedDataSourceReactiveUnitTest.java +++ b/extensions/hibernate-reactive/deployment/src/test/java/io/quarkus/hibernate/reactive/compatibility/ORMReactiveCompatbilityNamedDataSourceReactiveUnitTest.java @@ -21,7 +21,6 @@ public class ORMReactiveCompatbilityNamedDataSourceReactiveUnitTest extends Comp .withApplicationRoot((jar) -> jar .addClasses(Hero.class) .addAsResource("complexMultilineImports.sql", "import.sql")) - .withConfigurationResource("application-unittest-onlyreactive-named.properties") .overrideConfigKey("quarkus.hibernate-orm.schema-management.strategy", SCHEMA_MANAGEMENT_STRATEGY) .overrideConfigKey("quarkus.hibernate-orm.datasource", "named-datasource") .overrideConfigKey("quarkus.datasource.\"named-datasource\".reactive", "true") diff --git a/extensions/hibernate-reactive/deployment/src/test/java/io/quarkus/hibernate/reactive/compatibility/ORMReactiveCompatbilityOnlyReactiveJDBCDisabledUnitTest.java b/extensions/hibernate-reactive/deployment/src/test/java/io/quarkus/hibernate/reactive/compatibility/ORMReactiveCompatbilityOnlyReactiveJDBCDisabledUnitTest.java index 9d8e53ff2384e..2b557ba78c596 100644 --- a/extensions/hibernate-reactive/deployment/src/test/java/io/quarkus/hibernate/reactive/compatibility/ORMReactiveCompatbilityOnlyReactiveJDBCDisabledUnitTest.java +++ b/extensions/hibernate-reactive/deployment/src/test/java/io/quarkus/hibernate/reactive/compatibility/ORMReactiveCompatbilityOnlyReactiveJDBCDisabledUnitTest.java @@ -23,7 +23,6 @@ public class ORMReactiveCompatbilityOnlyReactiveJDBCDisabledUnitTest extends Com .addAsResource("complexMultilineImports.sql", "import.sql")) .setForcedDependencies(List.of( Dependency.of("io.quarkus", "quarkus-jdbc-postgresql-deployment", Version.getVersion()))) - .withConfigurationResource("application-unittest-onlyreactive.properties") .overrideConfigKey("quarkus.hibernate-orm.schema-management.strategy", SCHEMA_MANAGEMENT_STRATEGY) .overrideConfigKey("quarkus.datasource.jdbc", "false") .overrideConfigKey("quarkus.datasource.reactive", "true") diff --git a/extensions/hibernate-reactive/deployment/src/test/resources/application-unittest-onlyreactive-named.properties b/extensions/hibernate-reactive/deployment/src/test/resources/application-unittest-onlyreactive-named.properties deleted file mode 100644 index ba8917b1bedfc..0000000000000 --- a/extensions/hibernate-reactive/deployment/src/test/resources/application-unittest-onlyreactive-named.properties +++ /dev/null @@ -1 +0,0 @@ -quarkus.datasource."named-datasource".reactive.url=${postgres.reactive.url} diff --git a/extensions/hibernate-reactive/deployment/src/test/resources/application-unittest-onlyreactive.properties b/extensions/hibernate-reactive/deployment/src/test/resources/application-unittest-onlyreactive.properties deleted file mode 100644 index 6ba23fbd54fa1..0000000000000 --- a/extensions/hibernate-reactive/deployment/src/test/resources/application-unittest-onlyreactive.properties +++ /dev/null @@ -1 +0,0 @@ -quarkus.datasource.reactive.url=${postgres.reactive.url} diff --git a/test-framework/junit5-internal/src/main/java/io/quarkus/test/QuarkusUnitTest.java b/test-framework/junit5-internal/src/main/java/io/quarkus/test/QuarkusUnitTest.java index df333e180dda8..094d2f01c3434 100644 --- a/test-framework/junit5-internal/src/main/java/io/quarkus/test/QuarkusUnitTest.java +++ b/test-framework/junit5-internal/src/main/java/io/quarkus/test/QuarkusUnitTest.java @@ -906,6 +906,40 @@ public QuarkusUnitTest withConfigurationResource(String resourceName) { return this; } + /** + * Adds configuration properties using a text block with "key=value" lines. + * Blank lines and lines starting with '#' are ignored. + * + * Example: + * .withConfiguration(""" + * quarkus.datasource.db-kind=postgresql + * quarkus.datasource.username=user + * quarkus.datasource.password=pass + * """) + * + * @param configBlock text block with configuration lines + * @return self + */ + public QuarkusUnitTest withConfiguration(String configBlock) { + Objects.requireNonNull(configBlock, "Configuration text block must not be null"); + + configBlock.lines() + .map(String::trim) + .filter(line -> !line.isEmpty() && !line.startsWith("#")) + .forEach(line -> { + int idx = line.indexOf('='); + if (idx <= 0) { + throw new IllegalArgumentException( + "Invalid configuration line: '" + line + "'. Expected format 'key=value'"); + } + String key = line.substring(0, idx).trim(); + String value = line.substring(idx + 1).trim(); + overrideConfigKey(key, value); + }); + + return this; + } + /** * Overriden configuration properties take precedence over an {@code application.properties} asset added in the test * {@link JavaArchive}. diff --git a/test-framework/junit5-internal/src/test/java/io/quarkus/test/QuarkusUnitTestWithConfigurationTest.java b/test-framework/junit5-internal/src/test/java/io/quarkus/test/QuarkusUnitTestWithConfigurationTest.java new file mode 100644 index 0000000000000..642d7e685b762 --- /dev/null +++ b/test-framework/junit5-internal/src/test/java/io/quarkus/test/QuarkusUnitTestWithConfigurationTest.java @@ -0,0 +1,28 @@ +package io.quarkus.test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.eclipse.microprofile.config.Config; +import org.eclipse.microprofile.config.ConfigProvider; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; + +public class QuarkusUnitTestWithConfigurationTest { + + @RegisterExtension + static final QuarkusUnitTest config = new QuarkusUnitTest() + .withConfiguration(""" + quarkus.datasource.db-kind=postgresql + quarkus.datasource.username=quarkus + quarkus.datasource.password=quarkus + """); + + @Test + public void testInlineConfigurationApplied() { + Config cfg = ConfigProvider.getConfig(); + + assertEquals("postgresql", cfg.getValue("quarkus.datasource.db-kind", String.class)); + assertEquals("quarkus", cfg.getValue("quarkus.datasource.username", String.class)); + assertEquals("quarkus", cfg.getValue("quarkus.datasource.password", String.class)); + } +} From d784d8653c827d57827fcf3bae6ba200bce867ed Mon Sep 17 00:00:00 2001 From: "matthaios.stavrou" Date: Thu, 4 Dec 2025 13:01:19 +0200 Subject: [PATCH 2/2] test(junit5-internal): replace application.properties with inline runtime config in QuarkusUnitTest --- ...activeCompatbilityDefaultBothUnitTest.java | 1 - ...mpatbilityDefaultOnlyBlockingUnitTest.java | 1 - ...mpatbilityNamedDataSourceBothUnitTest.java | 1 - ...ourceNamedPersistenceUnitBothUnitTest.java | 1 - ...yNamedReactiveDefaultBlockingUnitTest.java | 1 - ...n-unittest-both-named-different.properties | 2 -- ...d-reactive-and-default-blocking.properties | 2 -- ...application-unittest-both-named.properties | 2 -- .../application-unittest-both.properties | 2 -- ...plication-unittest-onlyblocking.properties | 1 - test-framework/junit5-internal/pom.xml | 5 +++ .../java/io/quarkus/test/QuarkusUnitTest.java | 27 ++++++++++++++++ ...sUnitTestWithRuntimeConfigurationTest.java | 32 +++++++++++++++++++ 13 files changed, 64 insertions(+), 14 deletions(-) delete mode 100644 extensions/hibernate-reactive/deployment/src/test/resources/application-unittest-both-named-different.properties delete mode 100644 extensions/hibernate-reactive/deployment/src/test/resources/application-unittest-both-named-reactive-and-default-blocking.properties delete mode 100644 extensions/hibernate-reactive/deployment/src/test/resources/application-unittest-both-named.properties delete mode 100644 extensions/hibernate-reactive/deployment/src/test/resources/application-unittest-both.properties delete mode 100644 extensions/hibernate-reactive/deployment/src/test/resources/application-unittest-onlyblocking.properties create mode 100644 test-framework/junit5-internal/src/test/java/io/quarkus/test/QuarkusUnitTestWithRuntimeConfigurationTest.java diff --git a/extensions/hibernate-reactive/deployment/src/test/java/io/quarkus/hibernate/reactive/compatibility/ORMReactiveCompatbilityDefaultBothUnitTest.java b/extensions/hibernate-reactive/deployment/src/test/java/io/quarkus/hibernate/reactive/compatibility/ORMReactiveCompatbilityDefaultBothUnitTest.java index 6c6353a3f4c4d..c641cce8c1b23 100644 --- a/extensions/hibernate-reactive/deployment/src/test/java/io/quarkus/hibernate/reactive/compatibility/ORMReactiveCompatbilityDefaultBothUnitTest.java +++ b/extensions/hibernate-reactive/deployment/src/test/java/io/quarkus/hibernate/reactive/compatibility/ORMReactiveCompatbilityDefaultBothUnitTest.java @@ -24,7 +24,6 @@ public class ORMReactiveCompatbilityDefaultBothUnitTest extends CompatibilityUni .setForcedDependencies(List.of( Dependency.of("io.quarkus", "quarkus-jdbc-postgresql-deployment", Version.getVersion()) // this triggers Agroal )) - .withConfigurationResource("application-unittest-both.properties") .overrideConfigKey("quarkus.hibernate-orm.schema-management.strategy", SCHEMA_MANAGEMENT_STRATEGY) .overrideConfigKey("quarkus.datasource.reactive", "true") .overrideConfigKey("quarkus.datasource.db-kind", POSTGRES_KIND) diff --git a/extensions/hibernate-reactive/deployment/src/test/java/io/quarkus/hibernate/reactive/compatibility/ORMReactiveCompatbilityDefaultOnlyBlockingUnitTest.java b/extensions/hibernate-reactive/deployment/src/test/java/io/quarkus/hibernate/reactive/compatibility/ORMReactiveCompatbilityDefaultOnlyBlockingUnitTest.java index a1418c51cfb7a..b85305333ebc3 100644 --- a/extensions/hibernate-reactive/deployment/src/test/java/io/quarkus/hibernate/reactive/compatibility/ORMReactiveCompatbilityDefaultOnlyBlockingUnitTest.java +++ b/extensions/hibernate-reactive/deployment/src/test/java/io/quarkus/hibernate/reactive/compatibility/ORMReactiveCompatbilityDefaultOnlyBlockingUnitTest.java @@ -21,7 +21,6 @@ public class ORMReactiveCompatbilityDefaultOnlyBlockingUnitTest extends Compatib .setForcedDependencies(List.of( Dependency.of("io.quarkus", "quarkus-jdbc-postgresql-deployment", Version.getVersion()) // this triggers Agroal )) - .withConfigurationResource("application-unittest-onlyblocking.properties") .overrideConfigKey("quarkus.hibernate-orm.schema-management.strategy", SCHEMA_MANAGEMENT_STRATEGY) .overrideConfigKey("quarkus.datasource.reactive", "false") .overrideConfigKey("quarkus.datasource.db-kind", POSTGRES_KIND) diff --git a/extensions/hibernate-reactive/deployment/src/test/java/io/quarkus/hibernate/reactive/compatibility/ORMReactiveCompatbilityNamedDataSourceBothUnitTest.java b/extensions/hibernate-reactive/deployment/src/test/java/io/quarkus/hibernate/reactive/compatibility/ORMReactiveCompatbilityNamedDataSourceBothUnitTest.java index 30d5e63447afc..a03db23fba538 100644 --- a/extensions/hibernate-reactive/deployment/src/test/java/io/quarkus/hibernate/reactive/compatibility/ORMReactiveCompatbilityNamedDataSourceBothUnitTest.java +++ b/extensions/hibernate-reactive/deployment/src/test/java/io/quarkus/hibernate/reactive/compatibility/ORMReactiveCompatbilityNamedDataSourceBothUnitTest.java @@ -22,7 +22,6 @@ public class ORMReactiveCompatbilityNamedDataSourceBothUnitTest extends Compatib .setForcedDependencies(List.of( Dependency.of("io.quarkus", "quarkus-jdbc-postgresql-deployment", Version.getVersion()) // this triggers Agroal )) - .withConfigurationResource("application-unittest-both-named.properties") .overrideConfigKey("quarkus.hibernate-orm.schema-management.strategy", SCHEMA_MANAGEMENT_STRATEGY) .overrideConfigKey("quarkus.hibernate-orm.datasource", "named-datasource") .overrideConfigKey("quarkus.datasource.\"named-datasource\".reactive", "true") diff --git a/extensions/hibernate-reactive/deployment/src/test/java/io/quarkus/hibernate/reactive/compatibility/ORMReactiveCompatbilityNamedDataSourceNamedPersistenceUnitBothUnitTest.java b/extensions/hibernate-reactive/deployment/src/test/java/io/quarkus/hibernate/reactive/compatibility/ORMReactiveCompatbilityNamedDataSourceNamedPersistenceUnitBothUnitTest.java index 57d207afd186d..03fbe506b38b6 100644 --- a/extensions/hibernate-reactive/deployment/src/test/java/io/quarkus/hibernate/reactive/compatibility/ORMReactiveCompatbilityNamedDataSourceNamedPersistenceUnitBothUnitTest.java +++ b/extensions/hibernate-reactive/deployment/src/test/java/io/quarkus/hibernate/reactive/compatibility/ORMReactiveCompatbilityNamedDataSourceNamedPersistenceUnitBothUnitTest.java @@ -27,7 +27,6 @@ public class ORMReactiveCompatbilityNamedDataSourceNamedPersistenceUnitBothUnitT .setForcedDependencies(List.of( Dependency.of("io.quarkus", "quarkus-jdbc-postgresql-deployment", Version.getVersion()) // this triggers Agroal )) - .withConfigurationResource("application-unittest-both-named.properties") .overrideConfigKey("quarkus.hibernate-orm.\"named-pu\".schema-management.strategy", SCHEMA_MANAGEMENT_STRATEGY) .overrideConfigKey("quarkus.hibernate-orm.\"named-pu\".datasource", "named-datasource") .overrideConfigKey("quarkus.hibernate-orm.\"named-pu\".packages", "io.quarkus.hibernate.reactive.entities") diff --git a/extensions/hibernate-reactive/deployment/src/test/java/io/quarkus/hibernate/reactive/compatibility/ORMReactiveCompatibilityNamedReactiveDefaultBlockingUnitTest.java b/extensions/hibernate-reactive/deployment/src/test/java/io/quarkus/hibernate/reactive/compatibility/ORMReactiveCompatibilityNamedReactiveDefaultBlockingUnitTest.java index 6492830a4b03a..40e3299fb634e 100644 --- a/extensions/hibernate-reactive/deployment/src/test/java/io/quarkus/hibernate/reactive/compatibility/ORMReactiveCompatibilityNamedReactiveDefaultBlockingUnitTest.java +++ b/extensions/hibernate-reactive/deployment/src/test/java/io/quarkus/hibernate/reactive/compatibility/ORMReactiveCompatibilityNamedReactiveDefaultBlockingUnitTest.java @@ -24,7 +24,6 @@ public class ORMReactiveCompatibilityNamedReactiveDefaultBlockingUnitTest extend .setForcedDependencies(List.of( Dependency.of("io.quarkus", "quarkus-jdbc-postgresql-deployment", Version.getVersion()) // this triggers Agroal )) - .withConfigurationResource("application-unittest-both-named-reactive-and-default-blocking.properties") // If we want the named PU to be reactive only we need to explicitly disable the blocking the JDBC data source .overrideConfigKey("quarkus.datasource.\"named-datasource\".jdbc", "false") .overrideConfigKey("quarkus.datasource.\"named-datasource\".reactive", "true") diff --git a/extensions/hibernate-reactive/deployment/src/test/resources/application-unittest-both-named-different.properties b/extensions/hibernate-reactive/deployment/src/test/resources/application-unittest-both-named-different.properties deleted file mode 100644 index 8e9517a315b73..0000000000000 --- a/extensions/hibernate-reactive/deployment/src/test/resources/application-unittest-both-named-different.properties +++ /dev/null @@ -1,2 +0,0 @@ -quarkus.datasource."named-datasource-reactive".reactive.url=${postgres.reactive.url} -quarkus.datasource."named-datasource-blocking".jdbc.url=${postgres.blocking.url} diff --git a/extensions/hibernate-reactive/deployment/src/test/resources/application-unittest-both-named-reactive-and-default-blocking.properties b/extensions/hibernate-reactive/deployment/src/test/resources/application-unittest-both-named-reactive-and-default-blocking.properties deleted file mode 100644 index 9f9ce46eecbe3..0000000000000 --- a/extensions/hibernate-reactive/deployment/src/test/resources/application-unittest-both-named-reactive-and-default-blocking.properties +++ /dev/null @@ -1,2 +0,0 @@ -quarkus.datasource.jdbc.url=${postgres.blocking.url} -quarkus.datasource."named-datasource".reactive.url=${postgres.reactive.url} \ No newline at end of file diff --git a/extensions/hibernate-reactive/deployment/src/test/resources/application-unittest-both-named.properties b/extensions/hibernate-reactive/deployment/src/test/resources/application-unittest-both-named.properties deleted file mode 100644 index 5dcacade64902..0000000000000 --- a/extensions/hibernate-reactive/deployment/src/test/resources/application-unittest-both-named.properties +++ /dev/null @@ -1,2 +0,0 @@ -quarkus.datasource."named-datasource".reactive.url=${postgres.reactive.url} -quarkus.datasource."named-datasource".jdbc.url=${postgres.blocking.url} diff --git a/extensions/hibernate-reactive/deployment/src/test/resources/application-unittest-both.properties b/extensions/hibernate-reactive/deployment/src/test/resources/application-unittest-both.properties deleted file mode 100644 index ab64b69baf19f..0000000000000 --- a/extensions/hibernate-reactive/deployment/src/test/resources/application-unittest-both.properties +++ /dev/null @@ -1,2 +0,0 @@ -quarkus.datasource.reactive.url=${postgres.reactive.url} -quarkus.datasource.jdbc.url=${postgres.blocking.url} diff --git a/extensions/hibernate-reactive/deployment/src/test/resources/application-unittest-onlyblocking.properties b/extensions/hibernate-reactive/deployment/src/test/resources/application-unittest-onlyblocking.properties deleted file mode 100644 index 629bd08d5d630..0000000000000 --- a/extensions/hibernate-reactive/deployment/src/test/resources/application-unittest-onlyblocking.properties +++ /dev/null @@ -1 +0,0 @@ -quarkus.datasource.jdbc.url=${postgres.blocking.url} diff --git a/test-framework/junit5-internal/pom.xml b/test-framework/junit5-internal/pom.xml index ca48dc5bc9369..5e3c82921be63 100644 --- a/test-framework/junit5-internal/pom.xml +++ b/test-framework/junit5-internal/pom.xml @@ -51,6 +51,11 @@ io.quarkus quarkus-test-common + + io.quarkus + quarkus-arc + test + jakarta.enterprise jakarta.enterprise.cdi-api diff --git a/test-framework/junit5-internal/src/main/java/io/quarkus/test/QuarkusUnitTest.java b/test-framework/junit5-internal/src/main/java/io/quarkus/test/QuarkusUnitTest.java index 094d2f01c3434..2bc9be1d9abbd 100644 --- a/test-framework/junit5-internal/src/main/java/io/quarkus/test/QuarkusUnitTest.java +++ b/test-framework/junit5-internal/src/main/java/io/quarkus/test/QuarkusUnitTest.java @@ -940,6 +940,33 @@ public QuarkusUnitTest withConfiguration(String configBlock) { return this; } + /** + * Adds runtime configuration properties using a text block with "key=value" lines. + * Blank lines and lines starting with '#' are ignored. + * + * @param configBlock text block with configuration lines + * @return self + */ + public QuarkusUnitTest withRuntimeConfiguration(String configBlock) { + Objects.requireNonNull(configBlock, "Configuration text block must not be null"); + + configBlock.lines() + .map(String::trim) + .filter(line -> !line.isEmpty() && !line.startsWith("#")) + .forEach(line -> { + int idx = line.indexOf('='); + if (idx <= 0) { + throw new IllegalArgumentException( + "Invalid configuration line: '" + line + "'. Expected format 'key=value'"); + } + String key = line.substring(0, idx).trim(); + String value = line.substring(idx + 1).trim(); + overrideRuntimeConfigKey(key, value); + }); + + return this; + } + /** * Overriden configuration properties take precedence over an {@code application.properties} asset added in the test * {@link JavaArchive}. diff --git a/test-framework/junit5-internal/src/test/java/io/quarkus/test/QuarkusUnitTestWithRuntimeConfigurationTest.java b/test-framework/junit5-internal/src/test/java/io/quarkus/test/QuarkusUnitTestWithRuntimeConfigurationTest.java new file mode 100644 index 0000000000000..85bd09637993f --- /dev/null +++ b/test-framework/junit5-internal/src/test/java/io/quarkus/test/QuarkusUnitTestWithRuntimeConfigurationTest.java @@ -0,0 +1,32 @@ +package io.quarkus.test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import jakarta.inject.Singleton; + +import org.eclipse.microprofile.config.Config; +import org.eclipse.microprofile.config.ConfigProvider; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; + +import io.quarkus.arc.Unremovable; + +@Singleton +@Unremovable +public class QuarkusUnitTestWithRuntimeConfigurationTest { + + @RegisterExtension + static final QuarkusUnitTest config = new QuarkusUnitTest() + .withRuntimeConfiguration(""" + test.inline.runtime=value + quarkus.log.category.test.category.level=DEBUG + """); + + @Test + public void testInlineConfigurationApplied() { + Config cfg = ConfigProvider.getConfig(); + + assertEquals("value", cfg.getValue("test.inline.runtime", String.class)); + assertEquals("DEBUG", cfg.getValue("quarkus.log.category.test.category.level", String.class)); + } +}