Ваша апликација открива системски прокси, али JUnit тест не. Пре него што промените код за откривање, утврдите који JVM покреће сваки процес и које је аргументе примио.

JDK документује java.net.useSystemProxies као својство које се проверава једном при покретању. Постављање унутар тест методе може бити прекасно да промени ту одлуку при покретању.

Покретач апликације у IDE-у, IDE извршилац тестова, сам Maven и раздвојени Surefire тест процес могу имати различите VM аргументе. Поставка проксија у једном покретачу није доказ да ју је други покретач пренео.

Проверите конфигурацију раздвојеног процеса

Surefire-ов argLine даје JVM опције командне линије за раздвојена извршавања. Опција покретања може припадати тамо када се тестови извршавају у таквом раздвајању:

<argLine>-Djava.net.useSystemProxies=true</argLine>

Спојте опцију са постојећом конфигурацијом пројекта. Замена постојећег argLine може одбацити агенте покривености или друге потребне JVM поставке. Ако билд не користи раздвајање, уместо тога прегледајте JVM који заиста хостује тестове; argLine је документован као ефикасан само за раздвојена извршавања.

Својство које није осетљиво на покретање, а достављено кроз механизам својстава тест оквира, има другачији животни циклус. Не претпостављајте да свако својство стигне до VM-а довољно рано само зато што System.getProperty() враћа жељени низ током теста.

За фокусиран тест усмеравања проксија, експлицитно конфигурисан клијент такође може смањити зависност од конфигурације радне површине. Java 11+ HttpClient може у ту сврху користити HTTP ProxySelector локалан за клијента. Нека тај избор буде видљив у намери теста: тестирање клијентске руте и тестирање откривања проксија оперативног система су различите провере.

Повезани чланци