我可以在我的测试类中覆盖 quarkus application.properties 值吗?

San*_*dra 13 junit application.properties quarkus quarkus-rest-client

我在 quarkus application.properties 中配置了一个值

skipvaluecheck=true
Run Code Online (Sandbox Code Playgroud)

现在,每当我想要执行测试时,我都希望将此值设置为 false 而不是 true。但我不想更改application.properties,因为它会影响最新的应用程序部署。我只是希望我的测试以 false 值执行,以便我的测试覆盖范围在声纳中变为绿色。

从java代码中,我通过下面的操作获取这个值

ConfigProvider.getConfig().getValue("skipvaluecheck", Boolean.class);
Run Code Online (Sandbox Code Playgroud)

Sprint boot 中已经存在类似的东西,我很好奇 quarkus 中是否也存在这样的东西

覆盖 Junit Test 中的默认 Spring-Boot application.properties 设置

geo*_*and 18

您需要定义 的实现io.quarkus.test.junit.QuarkusTestProfile并将其添加到测试中@TestProfile

就像是:

@QuarkusTest
@TestProfile(MyTest.MyProfile.class)
public class MyTest {
    @Test
    public void testSomething() {
    }
    
    public static class BuildTimeValueChangeTestProfile implements QuarkusTestProfile {
    
        @Override
        public Map<String, String> getConfigOverrides() {
            return Map.of("skipvaluecheck", "true");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

查看更多详细信息可以在这里找到