सामान्य प्रश्न
उस समय से मेरे सिर के ऊपर से सवाल जोकोको के साथ पागल हो गए थे।
मेरा आवेदन सर्वर (jBoss, Glassfish ..) इराक, सीरिया में स्थित है, जो भी हो .. क्या उस पर एकीकरण परीक्षण चलाते समय मल्टी-मॉड्यूल कवरेज प्राप्त करना संभव है? जेनकिंस और सोनार भी अलग-अलग सर्वरों पर हैं।
हाँ। आपको जैकोको एजेंट का उपयोग करना होगा जो मोड में चलता है output=tcpserver
, जैकोको चींटी लिब। मूल रूप से दोjar
एस। इससे आपको 99% सफलता मिलेगी।
जैकोको एजेंट कैसे काम करता है?
आप एक स्ट्रिंग संलग्न करें
-javaagent:[your_path]/jacocoagent.jar=destfile=/jacoco.exec,output=tcpserver,address=*
अपने एप्लिकेशन सर्वर JAVA_OPTS पर जाएं और इसे पुनरारंभ करें। इस तार में ही[your_path]
आपके वीएम पर जहां एप सर्वर चलता है, उसे jacocoagent.jar, संग्रहीत (इसे संग्रहीत करें) पथ के साथ बदलना होगा। उस समय से आप ऐप सर्वर शुरू करते हैं, जो सभी एप्लिकेशन तैनात हैं, उनकी गतिशील निगरानी की जाएगी और उनकी गतिविधि (मतलब कोड का उपयोग) आपके लिए तैयार होगा।
जब से मेरा परीक्षण शुरू हुआ है तब से ही मैं जेकोको एजेंट को निष्पादन डेटा एकत्र करना शुरू कर सकता हूं?
हां, इस उद्देश्य के लिए आपको अपने जेन्किन्स कार्यक्षेत्र में स्थित जैकोकोएंट.जर और चींटी बिल्ड स्क्रिप्ट की आवश्यकता है।
तो मूल रूप से मुझे http://www.eclemma.org/jacoco/ से क्या जरूरत है, मेरे जोकिन्स वर्कस्पेस में स्थित jacocoant.jar है, और मेरे ऐप सर्वर वीएम पर स्थित jacocoagent.jar?
ये सही है।
मैं चींटी का उपयोग नहीं करना चाहता, मैंने सुना है कि जैकोको मावेन प्लगइन सभी चीजें भी कर सकता है।
यह सही नहीं है, जैकोको मावेन प्लगइन यूनिट टेस्ट डेटा और कुछ इंटीग्रेशन टेस्ट डेटा ( Arquillian 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://
यह भी ध्यान दें कि मैंने अपना jacocoant.jar
$ {कार्यक्षेत्र} /tools/jacoco/jacocoant.jar पर रखा है
मुझे आगे क्या करना चाहिये?
क्या आपने jacocoagent.jar के साथ अपना ऐप सर्वर शुरू किया है?
क्या आपने अपने जेन्किन्स कार्यक्षेत्र में चींटी स्क्रिप्ट और jacocoant.jar लगाई थी?
यदि हाँ, तो अंतिम चरण जेंकिन्स बिल्ड को कॉन्फ़िगर करना है। यहाँ रणनीति है:
jacocoReset
पहले से एकत्रित सभी डेटा को रीसेट करने के लिए चींटी लक्ष्य को लागू करें।
- अपने परीक्षण चलाएं
jacocoReport
रिपोर्ट प्राप्त करने के लिए चींटी लक्ष्य का आह्वान करें
यदि सब कुछ सही है, तो आप देखेंगे it-jacoco.exec
अपने निर्माण कार्यक्षेत्र में ।
स्क्रीनशॉट को देखें, मैंने ant
अपने कार्यक्षेत्र में भी $WORKSPACE/tools/ant
dir में स्थापित किया है , लेकिन आप अपने जेनकींस में स्थापित एक का उपयोग कर सकते हैं।
सोनार में इस रिपोर्ट को कैसे आगे बढ़ाया जाए?
मावेन sonar:sonar
काम करेगा (इसे कॉन्फ़िगर करना न भूलें), इसे मुख्य pom.xml पर इंगित करें ताकि यह सभी मॉड्यूल के माध्यम से चलेगा। sonar.jacoco.itReportPath=$WORKSPACE/it-jacoco.exec
सोनार को बताने के लिए पैरामीटर का उपयोग करें जहां आपकी एकीकरण परीक्षण रिपोर्ट स्थित है। हर बार जब यह नए मॉड्यूल कक्षाओं का विश्लेषण करेगा, तो इसमें कवरेज के बारे में जानकारी मिलेगी it-jacoco.exec
।
मेरे पास पहले से ही मेरे 'target` dir, `mvan सोनार: sonar` को अनदेखा / हटाने के लिए jacoco.exec है
डिफ़ॉल्ट रूप से अपने लक्ष्य को मिटाता mvn sonar:sonar
है clean
और हटाता है, sonar.dynamicAnalysis=reuseReports
इससे बचने के लिए उपयोग करें।