Per què les proves de Java no veuen java.net.useSystemProxies
Passa les opcions de descoberta de proxy de Java sensibles a l'inici al JVM que executa les proves, no només a l'aplicació o al llançador de compilació.
La teva aplicació detecta el proxy del sistema, però una prova de JUnit no. Abans de canviar el codi de detecció, identifica quin JVM executa cada procés i quins arguments ha rebut.
El JDK documenta java.net.useSystemProxies com una propietat que es comprova una vegada en arrencar. Establir-la dins d'un mètode de prova pot ser massa tard per canviar aquesta decisió d'inici.
Un llançador d'aplicacions de l'IDE, un executor de proves de l'IDE, el mateix Maven i un procés de proves Surefire bifurcat poden tenir arguments de VM diferents. Una configuració de proxy en un llançador no és prova que un altre llançador l'hagi passada.
Comprova la configuració del procés bifurcat
L'argLine de Surefire proporciona opcions de JVM de línia d'ordres per a execucions bifurcades. Una opció d'inici pot pertànyer-hi quan les proves s'executen en aquesta bifurcació:
<argLine>-Djava.net.useSystemProxies=true</argLine>Fusiona l'opció amb la configuració existent del projecte. Substituir un argLine existent pot descartar agents de cobertura o altres ajustos de JVM necessaris. Si la compilació no fa servir cap bifurcació, inspecciona en canvi el JVM que realment allotja les proves; argLine està documentat com a efectiu només per a execucions bifurcades.
Una propietat no sensible a l'inici subministrada pel mecanisme de propietats d'un framework de proves té un cicle de vida diferent. No assumeixis que cada propietat arriba al VM prou aviat només perquè System.getProperty() retorna la cadena desitjada durant la prova.
Per a una prova d'encaminament de proxy centrada, un client configurat explícitament també pot reduir la dependència de la configuració d'escriptori. Java 11+ HttpClient pot utilitzar per a això un HTTP ProxySelector local al client. Mantén aquesta elecció visible en la intenció de la prova: provar una ruta de client i provar la descoberta de proxy del sistema operatiu són comprovacions diferents.