'Using nested Quarkus tests with different test profiles

I want to create a test case for a class Foo. That class Foo gets an instance of Bar injected; however, there are different implementations of Bar, and the decision which one should be used depends on a config property. (The technical implementation is a producer method that produces instances of Bar. This producer method gets the config property injected and uses it to decide which implementation to use.)

I can achieve that by creating separate test classes for the different behavior of Foo (which depends on the injected Bar instance) and annotating each of them with a different test profile. These test profiles could provide the configuration such that the different implementations of Bar will be injected.

However, ideally, I want to have the tests in a single test class FooTest. Since the @TestProfile annotation is only allowed for classes, I tried using nested test classes like this:

@QuarkusTest
class FooTest {
    
    @Inject Foo foo;

    @Nested
    @TestProfile(ProfileA.class)
    class TestForImplementationA {

        @Test
        void testSomething() {
            foo.doSomething();
        }

    }

    @Nested
    @TestProfile(ProfileB.class)
    class TestForImplementationB {

        @Test
        void testSomething() {
            foo.doSomething();
        }

    }

}

Unfortunately, the test profiles do not seem to be taken into account since I end up with an error that the config property is missing:

The config property barType is required but it could not be found in any config source

Is there any way to achieve what I want, or do I have to stick to the separate test classes?

PS: An example project can be downloaded from https://www.dropbox.com/s/qn3mp4ls32d694a/quarkus-test.zip?dl=0



Solution 1:[1]

I have seen this work actually. But I am using the default configuration for 2 of the nested classes and the test profile for one of the tests.
Do you have an application properties defined with %test profile to provide the required configuration items that you're not trying to override?

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Eric