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