2012-12-18 22 views
11

मेरे पास मेरे आवेदन के लिए मेवेन टेस्ट प्रोजेक्ट है।Eclemma हमेशा कोड कवरेज 0% की रिपोर्टिंग

जुनीट परीक्षण ठीक चलते हैं, और कोड कवरेज परीक्षण भी चलता है।

लेकिन रिपोर्ट हमेशा कोड कवरेज का 0% दिखाती है।

मुझे क्या करना चाहिए?

उत्तर

2

बस मामले में आप इन करना भूल:

  1. आप @Test का उपयोग कर अपने परीक्षण व्याख्या कर रहे हैं?
  2. क्या आप कक्षा को जुनीट टेस्ट केस या कवरेज बटन से चला रहे हैं?

मुझे यकीन नहीं है कि समस्या का कारण क्या है, क्योंकि यह हमेशा मेरे लिए काम करता है। क्या आपने इसे ग्रहण से ही स्थापित किया है? इसे अनइंस्टॉल करने का प्रयास करें, और ग्रहण से पुनर्स्थापित करें। यहाँ यह कैसे करना है सिर्फ मामले में बताया गया है:, "सहायता" क्लिक करें> "नया सॉफ्टवेयर स्थापित करें"

  • क्लिक करें "जोड़ें", और टाइप

    1. ग्रहण में निम्नलिखित:
    2. करें EclEmma, ​​और स्थापित
  • +0

    हाँ, @Test का उपयोग करके। कवरेज बटन से चल रहा है। परीक्षण ठीक चलते हैं, लेकिन कवरेज हमेशा 0%, सभी लाल पथ दिखाता है। – renanlf

    +0

    मैंने जवाब अपडेट किया है, इसे जांचें इससे मदद मिलती है। – Steve

    +0

    नहीं ... अभी भी वही = /। क्या आप इसे मैवेन प्रोजेक्ट पर इस्तेमाल करते हैं? कारण यह समस्या केवल मेवेन प्रोजेक्ट्स पर होती है – renanlf

    5

    आधिकारिक साइट के अनुसार, Eclemma जैकोको लाइब्रेरी के आधार पर एक्लिप्स के लिए कोड कवरेज प्लगइन है।

    आप ग्रहण के बाहर एक ही कोड कवरेज इंजन का उपयोग करना चाहते हैं, आप प्लगइन Jacoco अपनी परियोजना के Maven विन्यास (पोम) के अंदर, के रूप में निम्नलिखित (this code was copied from the Agile Engineering blog) शामिल करना चाहिए:

    <build> 
        <plugins> 
         <plugin> 
          <groupId>org.jacoco</groupId> 
          <artifactId>jacoco-maven-plugin</artifactId> 
          <version>0.6.0.201210061924</version> 
          <executions> 
           <execution> 
            <id>jacoco-initialize</id> 
            <goals> 
             <goal>prepare-agent</goal> 
            </goals> 
           </execution> 
           <execution> 
            <id>jacoco-site</id> 
            <phase>test</phase> 
            <goals> 
             <goal>report</goal> 
            </goals> 
           </execution> 
          </executions> 
         </plugin> 
        </plugins> 
    </build> 
    

    चलाने के लिए परीक्षण सिर्फ टाइप कमांड लाइन टूल पर निम्नलिखित:

    mvn clean test 
    

    पुनश्च: आप भी Cobertura या Emma जैसे अन्य कोड कवरेज प्लग इन का उपयोग कर सकते हैं।

    +0

    मैं [Eclemma] (http://www.eclemma.org/) और [एम्मा वेबसाइट्स] के लिए हाइपरलिंक्स नहीं डाल सका (http://emma.sourceforge.net/maven-emma-plugin/) उपरोक्त पद पर। –

    +0

    मुझे भी एक ही समस्या मिली, मुझे एक जीडब्ल्यूटी परियोजना मिली और मैवेन नहीं ..., क्योंकि रेनान्लफ ने हमेशा कहा कि सबकुछ के लिए 0% कवरेज मिल रहा है। – Dipak

    2

    अब मुझे एहसास हुआ कि आप सिर्फ एक रिपोर्ट ग्रहण के अंदर उपकरण का उपयोग कर प्राप्त करना चाहते हैं ...

    कैसे ग्रहण संवाद में कोड कवरेज है? क्या आपने mouse right click on this dialog to export session (report), या File -> Export के अंदर उपयोग करने का प्रयास किया था?

    +0

    हाँ, यह केवल कवरेज के निष्पादन को निर्यात करने के लिए है, निर्यात की गई रिपोर्ट 0% कवरेज =/ – renanlf

    +0

    के साथ जारी है, इसलिए मेरे पास दो सुझाव हैं: 1. Eclemma प्लगइन को पुनर्स्थापित करने का प्रयास करें (यदि आपने इंस्टॉल करने के लिए अद्यतन साइट का उपयोग किया है आखिरी बार, इसे बाजार से अब स्थापित करने का प्रयास करें); 2।यदि पिछला काम नहीं करता है, तो समस्या को अलग करने के लिए सीधे मैवेन (जैसा कि मैंने दूसरी पोस्ट में बताया है) से जाकोको लाइब्रेरी का उपयोग करने का प्रयास करें, यह सुनिश्चित कर लें कि समस्या केवल जैकोको (ग्रहण प्लगइन) से ऊपर की परत के बारे में है और इससे नहीं इंजन। –

    2

    यह कई वर्षों से ज्ञात समस्या है और दुर्भाग्यवश इसके लिए अभी तक कोई आधिकारिक समाधान नहीं है।

    आप देख सकते हैं यह here, here और here

    एक-तो-शहद नहीं समाधान eCobertura का उपयोग कर (या 2.x से 1 तक eclemma पदावनति की कोशिश करने का हो सकता है।एक्स)

    -1

    मैं eclemma 2.3.2 का उपयोग कर रहा है और यह पूरी तरह से ग्रहण पर काम कर रहा है

    मैं सिर्फ अपने pom.xml

    <dependency> 
        <groupId>org.jboss.arquillian.extension</groupId> 
        <artifactId>arquillian-jacoco</artifactId> 
        <version>1.0.0.Alpha6</version> 
        <scope>test</scope> 
    </dependency> 
    <dependency> 
        <groupId>org.jacoco</groupId> 
        <artifactId>org.jacoco.core</artifactId> 
        <version>0.7.1.201405082137</version> 
        <scope>test</scope> 
    </dependency> 
    

    तब मैं परियोजना का निर्माण, अद्यतन में इन निर्भरताओं जोड़ने की जरूरत मेवेन प्रोजेक्ट कॉन्फ़िगरेशन और रन कवरेज प्लगइन अपेक्षित

    0

    मैं अभी इस समस्या से आया हूं और यह गलत तरीके से कॉन्फ़िगर किए गए क्लासपाथ के कारण हुआ था। जब यूनिट परीक्षण निष्पादित किए गए थे, तो वे एक संकलित जार (ग्रहण के बाहर संकलित वास्तविक स्रोत) के खिलाफ निष्पादित कर रहे थे, न कि मेरे वास्तविक स्रोत कोड। मेरे क्लासपाथ से जार को हटाने के बाद, इकाई परीक्षण सही ढंग से मेरे पैकेज स्रोत को हिट करता है।

    0

    यदि आप एक्लेमामा का उपयोग कर रहे हैं, तो आपको जैकोको निर्भरता जोड़नी होगी। यदि jacoco जोड़ दिया गया है और अब भी, यदि आप इस समस्या का सामना कर रहे, का उल्लेख eclemma faq: "Why does a class show as not covered although it has been executed?"

    यह कहते हैं,

    पहले सुनिश्चित करें कि निष्पादन डेटा एकत्र किया गया है बनाते हैं। इसके लिए एचटीएमएल रिपोर्ट के ऊपरी दाएं कोने पर सत्र लिंक का चयन करें और जांचें कि प्रश्न में वर्ग सूचीबद्ध है या नहीं। यदि यह सूचीबद्ध है लेकिन कक्षा को निष्पादन समय पर लिंक नहीं किया गया है तो एक अलग वर्ग फ़ाइल है। सुनिश्चित करें कि आप रिपोर्ट पीढ़ी के लिए रनटाइम पर सटीक उसी क्लास फ़ाइल का उपयोग कर रहे हैं। ध्यान दें कि कुछ टूल्स (उदा। ईजेबी कंटेनर, मॉकिंग फ्रेमवर्क) रनटाइम पर आपकी कक्षा फ़ाइलों को संशोधित कर सकते हैं।

    तो, मॉकिटो/पावरमोकिटो इस समस्या का कारण बन सकता है। हो सकता है कि आपने उस कक्षा को तुरंत चालू कर दिया हो जिसे आप परीक्षण करना चाहते हैं और उस ऑब्जेक्ट पर PowerMockito.spy() किया था। आपको दिखाया जाएगा कि टेस्ट केस त्रुटियों के बिना ठीक से निष्पादित किया गया था लेकिन जैकोको अपनी रिपोर्ट में कोड कवरेज में सुधार नहीं करेगा।

    आपको उस श्रेणी को नहीं रखना चाहिए जिसे आप @PrepareForTest() एनोटेशन में परीक्षण कर रहे हैं। जांचें कि क्या आपने इसे जोड़ा है और इसे एनोटेशन से हटा दिया है।

    0

    मैं परीक्षण मामलों के शीर्ष पर कक्षा का उदाहरण बुलाकर इस मुद्दे को हल करने में सक्षम था। अर्थात

    public hotelOccupancy hotel = new hotelOccupancy(); 
    
    @Test 
    public void testName() { 
        // some test here 
    } 
    

    एक बार मुझे लगता है कि मेरे सारे कवरेज काम करना शुरू किया और मुद्दों का समाधान किया गया था।

    संबंधित मुद्दे