Por qué las pruebas de Java no detectan java.net.useSystemProxies
Pasa las opciones de descubrimiento de proxy de Java sensibles al arranque al JVM que ejecuta las pruebas, no solo a la aplicación o al lanzador de compilación.
Tu aplicación detecta el proxy del sistema, pero una prueba de JUnit no. Antes de cambiar el código de detección, identifica qué JVM ejecuta cada proceso y qué argumentos ha recibido.
El JDK documenta java.net.useSystemProxies como una propiedad que se comprueba una vez al arrancar. Establecerla dentro de un método de prueba puede ser demasiado tarde para cambiar esa decisión de arranque.
Un lanzador de aplicaciones del IDE, un ejecutor de pruebas del IDE, el propio Maven y un proceso de pruebas Surefire bifurcado pueden tener argumentos de VM diferentes. Una configuración de proxy en un lanzador no es prueba de que otro lanzador la haya pasado.
Comprueba la configuración del proceso bifurcado
El argLine de Surefire proporciona opciones de JVM de línea de comandos para ejecuciones bifurcadas. Una opción de arranque puede pertenecer ahí cuando las pruebas se ejecutan en esa bifurcación:
<argLine>-Djava.net.useSystemProxies=true</argLine>Fusiona la opción con la configuración existente del proyecto. Sustituir un argLine existente puede descartar agentes de cobertura u otros ajustes de JVM necesarios. Si la compilación no usa ninguna bifurcación, inspecciona en su lugar el JVM que realmente aloja las pruebas; argLine está documentado como efectivo solo para ejecuciones bifurcadas.
Una propiedad no sensible al arranque suministrada mediante el mecanismo de propiedades de un framework de pruebas tiene un ciclo de vida distinto. No supongas que toda propiedad llega al VM con suficiente antelación solo porque System.getProperty() devuelve la cadena deseada durante la prueba.
Para una prueba de enrutamiento de proxy centrada, un cliente configurado explícitamente también puede reducir la dependencia de la configuración del escritorio. Java 11+ HttpClient puede usar para ello un HTTP ProxySelector local al cliente. Mantén esa elección visible en la intención de la prueba: probar una ruta de cliente y probar el descubrimiento de proxy del sistema operativo son comprobaciones distintas.