Vaša aplikacija otkriva sistemski proxy, ali JUnit test ne. Prije nego što promijenite kod za otkrivanje, utvrdite koji JVM pokreće svaki proces i koje je argumente primio.

JDK dokumentuje java.net.useSystemProxies kao svojstvo koje se provjerava jednom pri pokretanju. Postavljanje unutar test metode može biti prekasno da promijeni tu odluku pri pokretanju.

Pokretač aplikacije u IDE-u, IDE izvršilac testova, sam Maven i razdvojeni Surefire test proces mogu imati različite VM argumente. Postavka proxyja u jednom pokretaču nije dokaz da ju je drugi pokretač prenio.

Provjerite konfiguraciju razdvojenog procesa

Surefireov argLine daje JVM opcije komandne linije za razdvojena izvršavanja. Opcija pokretanja može pripadati tamo kada se testovi izvršavaju u takvom razdvajanju:

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

Spojite opciju s postojećom konfiguracijom projekta. Zamjena postojećeg argLine može odbaciti agente pokrivenosti ili druge potrebne JVM postavke. Ako build ne koristi razdvajanje, umjesto toga pregledajte JVM koji zaista hostuje testove; argLine je dokumentovan kao efikasan samo za razdvojena izvršavanja.

Svojstvo koje nije osjetljivo na pokretanje, a dostavljeno kroz mehanizam svojstava test okvira, ima drugačiji životni ciklus. Ne pretpostavljajte da svako svojstvo stigne do VM-a dovoljno rano samo zato što System.getProperty() vraća željeni niz tokom testa.

Za fokusiran test usmjeravanja proxyja, eksplicitno konfigurisan klijent takođe može smanjiti zavisnost od konfiguracije radne površine. Java 11+ HttpClient može u tu svrhu koristiti HTTP ProxySelector lokalni za klijenta. Neka taj izbor bude vidljiv u namjeri testa: testiranje klijentske rute i testiranje otkrivanja proxyja operativnog sistema su različite provjere.

Povezani članci