Az alkalmazás felismeri a rendszer proxyt, a JUnit teszt viszont nem. Mielőtt módosítja a felderítő kódot, állapítsa meg, melyik JVM futtatja az egyes folyamatokat, és milyen argumentumokat kapott.

A JDK a java.net.useSystemProxies tulajdonságot indításkor egyszer ellenőrzött tulajdonságként dokumentálja. Egy tesztmódszeren belüli beállítása túl késő lehet ahhoz, hogy megváltoztassa ezt az indítási döntést.

Az IDE alkalmazásindító, az IDE tesztfuttató, maga a Maven és egy elágaztatott Surefire tesztfolyamat mind különböző VM argumentumokkal rendelkezhet. Az egyik indítóban beállított proxy nem bizonyítja, hogy egy másik indító továbbadta.

Ellenőrizze az elágaztatott folyamat konfigurációját

A Surefire argLine parancssori JVM-beállításokat ad az elágaztatott végrehajtásokhoz. Egy indítási beállítás ott lehet a helyén, amikor a tesztek ilyen elágazásban futnak:

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

Vontassa össze a beállítást a projekt meglévő konfigurációjával. Egy meglévő argLine lecserélése elvetheti a lefedettségi ügynököket vagy más szükséges JVM-beállításokat. Ha a build nem használ elágazást, vizsgálja meg inkább azt a JVM-et, amely ténylegesen futtatja a teszteket; az argLine dokumentáltan csak elágaztatott végrehajtásoknál hatékony.

A tesztkeretrendszer tulajdonságmechanizmusán keresztül biztosított, indításra nem érzékeny tulajdonságnak más az életciklusa. Ne feltételezze, hogy minden tulajdonság elég korán eléri a VM-et csak azért, mert a System.getProperty() a teszt során visszaadja a kívánt karakterláncot.

Egy célzott proxy-útválasztási teszthez egy kifejezetten konfigurált kliens az asztali konfigurációtól való függést is csökkentheti. A Java 11+ HttpClient erre klienshelyi HTTP ProxySelector használható. Tartsa ezt a választást láthatóvá a teszt szándékában: az ügyfélútvonal tesztelése és az operációs rendszer proxyfelderítésének tesztelése különböző ellenőrzések.

Kapcsolódó cikkek