背景 環境需要設置代理才能夠訪問外部網路,如果只是運行java程式來訪問網路,我們可以通過java jar test.jar DproxyHost=proxy_ip DproxyPort=proxy_port,但如果是java的maven項目中,單元測試需要訪問網路,只執行mvn test則會導致單 ...
背景
環境需要設置代理才能夠訪問外部網路,如果只是運行java程式來訪問網路,我們可以通過java -jar test.jar -DproxyHost=proxy_ip -DproxyPort=proxy_port,但如果是java的maven項目中,單元測試需要訪問網路,只執行mvn test則會導致單元測試的代碼無法訪問網路。
解決
Maven單元測試,使用的是Surefire Maven插件。當Surefire插件fork JVM時,並不會繼承所有的系統屬性。因此我們可以通過命令行來如下設置屬性。而網路代理也是屬性之一。
mvn test -Dhttp.proxyHost=${url} -Dhttp.proxyPort={port} -Dhttp.proxyUser=${user} -Dhttp.proxyPassword=${pass}
其中,${url}、{port}、${user}和${pass}分別是代理伺服器的地址、埠,代理用戶和密碼。