Vaše aplikace systémovou proxy zjistí, ale test JUnit ne. Než změníte kód zjišťování, určete, které JVM spouští každý proces a jaké argumenty dostalo.

JDK dokumentuje java.net.useSystemProxies jako vlastnost, která se kontroluje jednou při spuštění. Nastavení uvnitř testovací metody může být příliš pozdě na změnu tohoto rozhodnutí při spuštění.

Spouštěč aplikace v IDE, testovací runner IDE, samotný Maven a odštěpený testovací proces Surefire mohou mít různé argumenty VM. Nastavení proxy v jednom spouštěči není důkazem, že ho jiný spouštěč předal.

Zkontrolujte konfiguraci odštěpeného procesu

argLine v Surefire poskytuje JVM volby příkazového řádku pro odštěpená spuštění. Volba pro spuštění tam může patřit, když testy běží v takovém odštěpení:

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

Sloučte volbu s existující konfigurací projektu. Nahrazení existujícího argLine může zahodit agenty pokrytí nebo jiná požadovaná nastavení JVM. Pokud sestavení odštěpení nepoužívá, prozkoumejte místo toho JVM, který testy skutečně hostuje; argLine je dokumentován jako účinný pouze pro odštěpená spuštění.

Vlastnost necitlivá na spuštění dodaná mechanismem vlastností testovacího frameworku má jiný životní cyklus. Nepředpokládejte, že každá vlastnost dorazí do VM dostatečně brzy jen proto, že System.getProperty() během testu vrací požadovaný řetězec.

Pro cílený test směrování přes proxy může explicitně nakonfigurovaný klient také snížit závislost na konfiguraci plochy. Java 11+ HttpClient k tomu může použít HTTP ProxySelector lokální pro klienta. Udržujte tuto volbu viditelnou v záměru testu: testování klientské trasy a testování zjišťování proxy operačního systému jsou různé kontroly.

Související články