本文介紹了測試容器的Quarkus環(huán)境變量問題的處理方法,對大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
使用測試容器開發(fā)集成測試。在Applation.Properties文件中有幾個(gè)字段作為環(huán)境變量(例如:作為quarkus.datasource.username=${SER_DB_USERNAME:postgres}傳遞)。
通過測試容器設(shè)置環(huán)境字段時(shí)
GenericContainer<?> someService = new GenericContainer<>(img)
.withEnv("SER_DB_USERNAME", DataLayer.DB_USERNAME)
正在使用測試容器成功獲取此值,但
對于以下環(huán)境變量,
app.security.enabled=${SER_SEC_ENABLE:true}在應(yīng)用程序?qū)傩晕募卸x
@IfBuildProperty(name = "app.security.enabled", stringValue = "true")
使用-DSER_SEC_ENABLED=TRUE通過命令提示符設(shè)置環(huán)境變量,但當(dāng)嘗試在測試容器中傳遞相同的值時(shí),環(huán)境變量始終為空。
GenericContainer<?> someService = new GenericContainer<>(img)
.withEnv("SER_SEC_ENABLE", "true")
推薦答案
在沒有更多項(xiàng)目上下文的情況下,我至少可以觀察到,app.security.enabled是一個(gè)構(gòu)建屬性,而不是運(yùn)行時(shí)屬性,因此它可能已經(jīng)在構(gòu)建時(shí)進(jìn)行了計(jì)算。如果使用已構(gòu)建的映像/應(yīng)用程序啟動容器,則環(huán)境變量很可能不起作用。
此外,使用-D標(biāo)志在JVM上設(shè)置屬性不會產(chǎn)生環(huán)境變量,這明確地是JVM上的系統(tǒng)屬性。
這篇關(guān)于測試容器的Quarkus環(huán)境變量問題的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,






