የጃቫ ሙከራዎች java.net.useSystemProxies የማያገኙበት ምክንያት
በሙከራዎቹ ላይ ከሚሠራው JVM ብቻ ሳይሆን ለመተግበሪያው ወይም ለግንባታ አስጀማሪውም የጅምር ላይ ተጽዕኖ የሚያሳድሩ የጃቫ ፕሮክሲ ፍለጋ አማራጮችን አስተላልፍ።
መተግበሪያዎ የስርዓቱን ፕሮክሲ ይለያል፣ ግን የJUnit ሙከራ አይለይም። የፍለጋ ኮዱን ከመቀየርዎ በፊት የትኛው JVM እያንዳንዱን ሂደት እንደሚያስኬድ እና የትኞቹን ክርክሮች እንደተቀበለ ይለዩ።
JDK የjava.net.useSystemProxiesን በአንድ ጊዜ በመጀመሪያ ላይ የሚፈተሽ ንብረት አድርጎ ይመዘግባል። በሙከራ ዘዴ ውስጥ ማዘጋጀቱ የዚያን የጅምር ውሳኔ ለመቀየር ዘግይቶ ሊሆን ይችላል።
የIDE የመተግበሪያ አስጀማሪ፣ የIDE የሙከራ አስኪያጅ፣ Maven ራሱ እና የተከፋፈለ Surefire የሙከራ ሂደት ሁሉም የተለያዩ የVM ክርክሮች ሊኖራቸው ይችላል። በአንድ አስጀማሪ ውስጥ ያለ የፕሮክሲ ቅንብር ሌላው አስጀማሪ አስተላልፎታል የሚል ማስረጃ አይደለም።
የተከፋፈለውን ሂደት ውቅር ይመልከቱ
የSurefire argLine ለተከፋፈሉ አፈጻጸሞች የትዕዛዝ መስመር JVM አማራጮችን ያቀርባል። ሙከራዎቹ በእንደዚህ ዓይነት ሹካ ውስጥ ሲሠሩ የጅምር አማራጭ እዚያ ሊኖር ይችላል።
<argLine>-Djava.net.useSystemProxies=true</argLine>አማራጩን ከፕሮጀክቱ ነባር ውቅር ጋር ያዋህዱ። ነባር argLineን መተካት የሽፋን ወኪሎችን ወይም ሌሎች አስፈላጊ የJVM ቅንብሮችን ሊያስወግድ ይችላል። ግንባታው ሹካ ካልተጠቀመ፣ በእውነቱ ሙከራዎቹን የሚያስተናግደውን JVM ይመርምሩ፤ argLine ለተከፋፈሉ አፈጻጸሞች ብቻ ውጤታማ እንደሆነ ተመዝግቧል።
በሙከራ ማዕቀፍ ንብረት ዘዴ የሚቀርብ የጅምር ላይ ተጽዕኖ የማይደረግበት ንብረት የተለየ የሕይወት ዑደት አለው። System.getProperty() በሙከራው ወቅት የሚፈለገውን ሕብረቁምፊ ስለሚመልስ ብቻ እያንዳንዱ ንብረት ወደ VM በጊዜ ይደርሳል ብለው አያስቡ።
ለተጠናከረ የፕሮክሲ ማዞሪያ ሙከራ፣ በግልጽ የተዋቀረ ደንበኛ በዴስክቶፕ ውቅር ላይ ያለውን ጥገኝነት ሊቀንስ ይችላል። Java 11+ HttpClient ለዚያ ዓላማ በደንበኛ ውስጥ የሚገኝ HTTP ProxySelector መጠቀም ይችላል። ያንን ምርጫ በሙከራው ዓላማ ውስጥ ግልጽ ያድርጉ፦ የደንበኛ መንገድን መፈተሽ እና የስርዓተ ክወና ፕሮክሲ ፍለጋን መፈተሽ የተለያዩ ምርመራዎች ናቸው።