前段時間商品線Hudson上的腳本運行速度非常慢,從命令輸出中發現,每運行一個test都容器啓動、初始化,在葉渡、景升同學的不懈努力排查下終於找到了原因,儘管花費了很長時間,但是我們還是有收穫的,下面和大家分享一下 maven-surefire-plugin 的一些小知識:
Maven的surefire插件中fork屬性的配置:
Maven運行測試用例時,是通過調用maven的surefire插件並fork一個子進程來執行用例的。forkmode屬性中指明是要爲每個測試創建一個進程,還是所有測試在同一個進程中完成。
forkMode 可設置值有 “never”, “once”, “always” 和 “pertest”
- pretest: 每一個測試創建一個新進程,爲每個測試創建新的JVM是單獨測試的最徹底方式,但也是最慢的,不適合hudson上持續迴歸
2. once:在一個進程中進行所有測試。once爲默認設置,在Hudson上持續迴歸時建議使用默認設置
always:在一個進程中並行的運行腳本,Junit4.7以上版本纔可以使用,surefire的版本要在2.6以上,其中 threadCount:執行時,指定可分配的線程數量。只和參數parallel配合使用有效。默認:5