প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী
সেই সময় থেকে আমার মাথার উপরের প্রশ্নগুলি আমি জ্যাকো দিয়ে পাগল হয়ে গিয়েছিলাম।
আমার অ্যাপ্লিকেশন সার্ভার (জেবস, গ্লাসফিশ ..) ইরাক, সিরিয়ায় অবস্থিত, যাই হোক না কেন .. এটিতে ইন্টিগ্রেশন পরীক্ষা চলাকালীন মাল্টি-মডিউল কভারেজ পাওয়া কি সম্ভব? জেনকিনস এবং সোনারও বিভিন্ন সার্ভারে রয়েছেন।
হ্যাঁ. আপনাকে জ্যাকোকো এজেন্ট ব্যবহার করতে হবে যা মোডে output=tcpserver
জ্যাকোকো পিঁপড়া ব্যবহার করে। মূলত দুটি jar
এস। এটি আপনাকে 99% সাফল্য দেবে।
জ্যাকো এজেন্ট কীভাবে কাজ করে?
আপনি একটি স্ট্রিং সংযোজন
-javaagent:[your_path]/jacocoagent.jar=destfile=/jacoco.exec,output=tcpserver,address=*
আপনার অ্যাপ্লিকেশন সার্ভারে JAVA_OPTS এবং এটি পুনরায় চালু করুন। এই স্ট্রিংটিতে কেবল [your_path]
জ্যাকোকোজেন্ট.জারের পাথের সাথে প্রতিস্থাপন করতে হবে, আপনার ভিএম-এ অ্যাপ্লিকেশন সার্ভারটি চালিত সেখানে সংরক্ষণ করুন (এটি সংরক্ষণ করুন!)। সেই সময় থেকে আপনি অ্যাপ্লিকেশন সার্ভারটি শুরু করার পরে, মোতায়েন করা সমস্ত অ্যাপ্লিকেশনগুলি গতিশীলভাবে পর্যবেক্ষণ করা হবে এবং তাদের ক্রিয়াকলাপ (যার অর্থ কোড ব্যবহার) টিসিএল অনুরোধের দ্বারা জ্যাকোকাস। এক্সেক ফর্ম্যাটটিতে আসার জন্য আপনাকে প্রস্তুত থাকবে।
আমার পরীক্ষা শুরু হওয়ার পর থেকেই আমি কী জেকো এজেন্টকে পুনরায় নির্বাহের ডেটা সংগ্রহ শুরু করতে পারি?
হ্যাঁ, সেই উদ্দেশ্যে আপনার জেনকিনস ওয়ার্কস্পেসে অবস্থিত জ্যাকোঅ্যান্ট.জার এবং পিঁপড়া বিল্ড স্ক্রিপ্টের প্রয়োজন।
সুতরাং মূলতঃ http://www.eclemma.org/jacoco/ এর থেকে আমার যা জিনকিনস ওয়ার্কস্পেসে অবস্থিত জ্যাকোয়্যান্ট.জার, এবং আমার অ্যাপ্লিকেশন সার্ভার ভিএম-এ অবস্থিত জ্যাকোএজেন্ট.জারটি আমার কী প্রয়োজন?
সেটা ঠিক.
আমি পিঁপড়া ব্যবহার করতে চাই না, শুনেছি জ্যাকোকো মাভেন প্লাগইন সব কিছু করতে পারে।
এটি ঠিক নয়, জ্যাকোকো ম্যাভেন প্লাগইন ইউনিট পরীক্ষার ডেটা এবং কিছু সংহতকরণ পরীক্ষার ডেটা সংগ্রহ করতে পারে ( আর্কুইলিয়ান জ্যাকো দেখুন ), তবে আপনার যদি জেনকিন্সে পৃথক বিল্ড হিসাবে বিশ্রামের আশ্বাসপ্রাপ্ত পরীক্ষাগুলি থাকে এবং আপনি মাল্টি-মডিউল কভারেজ দেখাতে চান তবে আমি পারি ম্যাভেন প্লাগইন আপনাকে কীভাবে সহায়তা করতে পারে তা দেখুন না।
জ্যাকোকো এজেন্ট ঠিক কী উত্পাদন করে?
.exec
বিন্যাসে কেবল কভারেজ ডেটা । সোনার তখন তা পড়তে পারে।
আমার জাভা ক্লাসগুলি কোথায় অবস্থিত তা জ্যাকোকে জানা দরকার?
না, সোনার করে, তবে জ্যাকো নয়। আপনি যখন mvn sonar:sonar
ক্লাসে পাথ করেন তখন খেলাধুলায় আসে।
তাহলে পিপীলিকার লিপিটি কী?
এটি আপনার জেনকিন্স ওয়ার্কস্পেসে উপস্থাপন করতে হবে। আমার পিপীলিকার লিপি, আমি এটি jacoco.xml
দেখতে দেখতে বলেছিলাম :
<project name="Jacoco library to collect code coverage remotely" xmlns:jacoco="antlib:org.jacoco.ant">
<property name="jacoco.port" value="6300"/>
<property name="jacocoReportFile" location="${workspace}/it-jacoco.exec"/>
<taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
<classpath path="${workspace}/tools/jacoco/jacocoant.jar"/>
</taskdef>
<target name="jacocoReport">
<jacoco:dump address="${jacoco.host}" port="${jacoco.port}" dump="true" reset="true" destfile="${jacocoReportFile}" append="false"/>
</target>
<target name="jacocoReset">
<jacoco:dump address="${jacoco.host}" port="${jacoco.port}" reset="true" destfile="${jacocoReportFile}" append="false"/>
<delete file="${jacocoReportFile}"/>
</target>
</project>
এই স্ক্রিপ্টটি চালু -Dworkspace=$WORKSPACE
করার সময় আপনার দুটি বাধ্যতামূলক প্যারামগুলি পাস করা উচিত
যা আপনার জেনকিনস ওয়ার্কস্পেস এবং -Djacoco.host=yourappserver.com
হোস্ট ছাড়াই এটি নির্দেশ করতে ব্যবহার করুনhttp://
এছাড়াও লক্ষ্য করুন যে আমি আমার my jacocoant.jar
{ওয়ার্কস্পেস} / টলস / জ্যাকোকো / জ্যাকোকোয়েন্ট.জারে রেখেছি
এরপর আমার কি করা উচিৎ?
আপনি জ্যাকোএজেন্ট.জার দিয়ে আপনার অ্যাপ্লিকেশন সার্ভারটি শুরু করেছিলেন?
আপনি কি জিনকিনসের কর্মক্ষেত্রে পিপীলিকার স্ক্রিপ্ট এবং জ্যাকোয়্যান্ট.জার রেখেছেন?
যদি হ্যাঁ তবে শেষ পদক্ষেপটি হ'ল জেনকিনস বিল্ডটি কনফিগার করা। কৌশলটি এখানে:
jacocoReset
পূর্ববর্তী সমস্ত সংগৃহীত ডেটা পুনরায় সেট করতে পিঁপড়ের লক্ষ্যবস্তু ডেকে আনুন ।
- আপনার পরীক্ষা চালান
jacocoReport
রিপোর্ট পেতে পিঁপড়ের টার্গেট ডেকে আনুন
যদি সবকিছু ঠিক থাকে তবে it-jacoco.exec
আপনি আপনার বিল্ড ওয়ার্কস্পেসে দেখতে পাবেন ।
স্ক্রিনশটটি দেখুন, আমি ant
আমার ওয়ার্কস্পেসেও $WORKSPACE/tools/ant
ডিয়ার ইনস্টল করেছি , তবে আপনি নিজের জিনকিনসে ইনস্টল করা একটি ব্যবহার করতে পারেন।
সোনারে এই প্রতিবেদনটি কীভাবে ঠেলাবেন?
ম্যাভেন sonar:sonar
কাজটি করবেন (এটি কনফিগার করতে ভুলবেন না), এটিকে প্রধান pom.xML এ নির্দেশ করুন যাতে এটি সমস্ত মডিউল জুড়ে চলে। sonar.jacoco.itReportPath=$WORKSPACE/it-jacoco.exec
আপনার ইন্টিগ্রেশন পরীক্ষার রিপোর্টটি কোথায় অবস্থিত তা সোনারকে জানানোর জন্য প্যারামিটার ব্যবহার করুন । প্রতিবার এটি নতুন মডিউল শ্রেণীর বিশ্লেষণ করবে, এটি কভারেজ সম্পর্কিত তথ্য সন্ধান করবে it-jacoco.exec
।
আমার ইতিমধ্যে আমার `টার্গেট দির, v এমভিএন সোনারে জ্যাকোকো.এক্সেক রয়েছে: সোনার it এটিকে উপেক্ষা / মুছে ফেলে
ডিফল্টরূপে আপনার টার্গেট dir mvn sonar:sonar
করে clean
এবং মুছে দেয় , sonar.dynamicAnalysis=reuseReports
এড়াতে ব্যবহার করুন ।