maven 測(cè)試寫入JRE參數(shù)實(shí)例詳解
項(xiàng)目在測(cè)試時(shí)碰到一個(gè)問(wèn)題,就是JVM加載參數(shù)的問(wèn)題。
web項(xiàng)目本身在注入配置信息的時(shí)候,讀取的是本地的配置文件,但是配置文件的位置是卸載tomcat 里面配置的JAVA_OPTS里面的。
問(wèn)題出現(xiàn)了:
JAVA_OPTS將變量寫入了JRE,但是在執(zhí)行maven test的時(shí)候,是沒(méi)有寫入JRE參數(shù)的,所以在進(jìn)行諸如service等涉及到數(shù)據(jù)庫(kù)的測(cè)試的時(shí)候,將無(wú)法正確加載數(shù)據(jù)庫(kù)的配置,導(dǎo)致無(wú)法進(jìn)行數(shù)據(jù)庫(kù)測(cè)試。
解決方案:
使用configuration來(lái)注入?yún)?shù)到JRE當(dāng)中,這樣就可以將參數(shù)寫入JRE了,然后即可讀取本地的配置文件
pom代碼如下:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <forkMode>pertest</forkMode> <argLine>${maven.test.jvmargs}</argLine> </configuration></plugin>
maven plugin
可以使用該plugin,maven本身不提供測(cè)試的,使用的是該插件,通過(guò)注入argLine可以方便我們注入一些JVM的參數(shù)
比如我在進(jìn)行spring測(cè)試的時(shí)候,因?yàn)閷⒁恍┟舾行畔⑴渲玫脚渲梦募校晕募旧硎遣辉陧?xiàng)目中的,目前只能通過(guò)注入jvm參數(shù),然后就可以通過(guò)System.getProperty來(lái)獲取到對(duì)應(yīng)的參數(shù)
至于forkMode是測(cè)試指定的參數(shù)。
forkMode 可設(shè)置值有 “never”, “once”, “always” 和 “pertest”。
參數(shù) | 解釋 |
---|---|
pretest | 每一個(gè)測(cè)試創(chuàng)建一個(gè)新進(jìn)程,為每個(gè)測(cè)試創(chuàng)建新的JVM是單獨(dú)測(cè)試的最徹底方式,但也是最慢的,不適合hudson上持續(xù)回歸 |
once | 在一個(gè)進(jìn)程中進(jìn)行所有測(cè)試。once為默認(rèn)設(shè)置,在Hudson上持續(xù)回歸時(shí)建議使用默認(rèn)設(shè)置。 |
always | 在一個(gè)進(jìn)程中并行的運(yùn)行腳本,Junit4.7以上版本才可以使用,surefire的版本要在2.6以上提供這個(gè)功能,其中threadCount執(zhí)行時(shí),指定可分配的線程數(shù)量。只和參數(shù)parallel配合使用有效。默認(rèn):5。 |
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
新聞熱點(diǎn)
疑難解答
圖片精選