4

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

skipvaluecheck=true

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

从 java 代码中,我通过以下操作获取此值

ConfigProvider.getConfig().getValue("skipvaluecheck", Boolean.class);

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

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

4

3 回答 3

4

您需要定义一个实现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");
        }
    }
}

查看更多细节可以在这里找到

于 2021-09-21T11:09:02.757 回答
1

Quarkus 为此提供了 a 的使用QuarkusTestProfile,您可以像这样定义配置文件:

public class CustomTestProfile implements QuarkusTestProfile {

    Map<String, String> getConfigOverrides() {
        return Map.of("skipvaluecheck", "false");
    }

}

然后在你的测试课上:

@QuarkusTest
@TestProfile(CustomTestProfile.class)
public class TestClass {
//...(etc)...

此处提供更多信息:https ://quarkus.io/blog/quarkus-test-profiles/

于 2021-09-21T11:09:17.373 回答
1

Quarkus 应用程序属性具有配置文件。例如

quarkus.log.level=WARN
%test.quarkus.log.level=INFO

这样(使用前缀%test.)您可以为测试设置不同的值而不是生产值。您还可以设置%dev.在本地开发模式下运行的时间。

请参阅https://quarkus.io/guides/config-reference#profiles以供参考。

于 2021-09-27T11:36:05.770 回答