Таны програм системийн проксийг илрүүлдэг ч JUnit тест илрүүлдэггүй. Илрүүлэх кодыг өөрчлөхөөс өмнө аль JVM процесс бүрийг ажиллуулж, ямар аргумент авсныг тодорхойлно уу.

JDK нь java.net.useSystemProxies-ийг эхлэх үед нэг удаа шалгагдах шинж чанар гэж бичдэг. Үүнийг тестийн аргын дотор тохируулах нь тухайн эхлэлийн шийдвэрийг өөрчлөхөд оройтож магадгүй.

IDE програмын эхлүүлэгч, IDE тестийн гүйцэтгэгч, Maven өөрөө болон салбарласан Surefire тестийн процесс бүгд өөр өөр VM аргументтай байж болно. Нэг эхлүүлэгч дэх прокси тохиргоо нь өөр эхлүүлэгч үүнийг дамжуулсан гэдгийн баталгаа биш.

Салбарласан процессын тохиргоог шалгана уу

Surefire-ийн argLine салбарласан гүйцэтгэлүүдэд командын мөрийн JVM сонголтуудыг өгдөг. Тестүүд ийм салбарт ажиллах үед эхлэлийн сонголт тэнд байж болно:

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

Сонголтыг төслийн одоо байгаа тохиргоотой нэгтгэнэ үү. Одоо байгаа argLine-ийг солих нь хамрах хүрээний агентууд эсвэл бусад шаардлагатай JVM тохиргоог хаяж болно. Хэрэв build ямар ч салбар ашиглахгүй бол оронд нь тестийг бодитоор хостлож буй JVM-ийг шалгана уу; argLine нь зөвхөн салбарласан гүйцэтгэлүүдэд үр дүнтэй гэж бичигдсэн.

Тестийн хүрээний шинж чанарын механизмаар өгөгдсөн, эхлэлд мэдрэмжгүй шинж чанар нь өөр амьдралын мөчлөгтэй. Тестийн үеэр System.getProperty() хүссэн тэмдэгт мөрийг буцаадаг учраас л шинж чанар бүр VM-д хангалттай эрт хүрдэг гэж бүү бодоорой.

Төвлөрсөн прокси-маршрутын тестийн хувьд тодорхой тохируулсан клиент нь ширээний тохиргооноос хамааралтай байдлыг мөн бууруулж чадна. Java 11+ HttpClient үүнд зориулж клиент доторх HTTP ProxySelector ашиглаж болно. Тэр сонголтыг тестийн зорилгод харагдахуйц байлгаарай: клиентийн маршрутыг шалгах ба үйлдлийн системийн прокси илрүүлэлтийг шалгах нь өөр өөр шалгалт юм.

Холбоотой нийтлэлүүд