2012-08-02 30 views
14

क्या किसी को PHPSpec परीक्षणों से कवरेज रिपोर्ट जेनरेट करने के लिए कोई तरीका पता है?PHPSpec और कवरेज रिपोर्ट

मैंने xdebug के बारे में सोचा, लेकिन जहां तक ​​मुझे पता है कि यह जेनकींस के लिए रिपोर्ट उत्पन्न नहीं कर सकता है।

उत्तर

38

जैसा कि यह खड़ा है (1.4.0) यह अभी तक कोड कवरेज का समर्थन नहीं करता है। इस पर आपकी प्रतिक्रिया सुनने के लिए खुश है। नीचे कोड कवरेज पर मेरी राय है।

PHPSpec एक बीडीडी ढांचा है। यदि आप बीडीडी कर रहे थे तो आप अपनी कक्षा लिखने से पहले अपनी कक्षा के व्यवहार का वर्णन करेंगे। यदि आपने ऐसा किया है तो आपके वर्गों का प्रासंगिक व्यवहार सभी "परीक्षण" के साथ ठीक से कवर किया जाएगा।

कोड कवरेज टूल और मीट्रिक विरासत कोड (कोड जिसे आपने चश्मा/परीक्षण के बिना लिखा था) के लिए उपयोगी हैं। आप इस तरह के एक उपकरण का उपयोग कर सकते हैं ताकि उस बिंदु पर जा सकें जहां आप टीडीडी जारी रख सकें और रिग्रेशन से संरक्षित होने का लाभ प्राप्त कर सकें।

सामान्य रूप से यह दृष्टिकोण वास्तव में व्यवहार पहले (टीडीडी) का वर्णन करने के रूप में प्रभावी नहीं है। एक से अधिक विधि एक से अधिक आवश्यक व्यवहार का जवाब देने के लिए काफी सरल हो सकती हैं। आप जानते हैं कि जब आप टीडीडींग करते हैं, तो आप प्रक्रिया में रीफैक्टरिंग करते रहते हैं, अनियंत्रित कोड हटाते हैं। आप कोड की समान पंक्तियों को मारने वाले 10 चश्मा (परीक्षण) के साथ समाप्त होते हैं, सभी अलग-अलग आवश्यक व्यवहार का वर्णन करते हैं, जो कोड को समझने के लिए उपयोगी होते हैं।

"परीक्षण" शब्द वाली समस्याओं में से एक यह है कि इससे लोगों को लगता है कि टीडीडी सत्यापन के बारे में है। यह। यह संचार के बारे में है। स्टोरीबीडीडी हितधारकों के बीच संचार है और स्पेकबीडीडी कक्षाओं के बीच संचार है। सरल, जीवित, बस पर्याप्त दस्तावेज।

गारंटी देने के लिए कोड कवरेज आपने अपने कोड का परीक्षण किया है, एक गलत मीट्रिक है। दुर्भाग्य से लोग सोचते हैं कि परीक्षण संरचना परीक्षण परीक्षण से अधिक महत्वपूर्ण है। यही कारण है कि बीडीडी का जन्म सही रास्ते पर ध्यान केंद्रित करने में मदद के लिए हुआ था। यह सुनिश्चित करना कि कोड का यह हिस्सा परीक्षण किया गया है नकली है क्योंकि कोड का वह हिस्सा एक से अधिक चीजें कर सकता है, अगर इसे अच्छी तरह से पुनर्निर्मित किया जाना चाहिए। इसके अलावा आप एक्सेसर्स और संशोधक और कन्स्ट्रक्टर आदि जैसे परीक्षण सामान समाप्त कर देंगे।

लेकिन मैं इस पर समुदाय को सुनने के लिए खुला हूं। मैं देख सकता हूं कि कोड कवरेज उपयोगी हो सकता है। इसके अलावा सेबस्टियन बर्गमान ने PHPUnit से इसे अच्छी तरह से मॉड्यूलर किया है, मैं इसे PHPSpec में पुन: उपयोग कर सकता हूं। मैं चाहूंगा कि आपने पहले अपनी चश्मा लिखी हों। आपको अपने प्रासंगिक व्यवहार का 100% कोड कवरेज मुफ्त में मिलता है। मेरे विचारों में, यह ज्यादातर भाग के लिए महत्वपूर्ण है।

+1

अधिक व्यर्थ व्यक्ति के रूप में आपका अपमान मेरे लिए बहुत मूल्यवान है।मैं अपनी टीम में बीडीडी को शामिल करना शुरू कर रहा हूं, यही कारण है कि मैं इसे सही करने और उपयोगी आंकड़ों को इकट्ठा करने की बहुत परवाह करता हूं :) – spamec

+0

नई परियोजनाओं के लिए यह एक अच्छा तरीका है, लेकिन अगर हम मौजूदा विरासत में बीडीडी को लागू करना चाहते हैं तो क्या होगा? क्या आपको इसमें कोई अनुभव है? क्या मौजूदा कोड के लिए स्पेक लिखने का कोई अर्थ है? पुराने कोड के लिए मेरी राय में नए चश्मे के लिए यूनिट परीक्षण होना चाहिए। –

+1

ग्रेट उत्तर मार्सेलो। फिर भी, कोड कवरेज आश्वासन देता है, विश्वास जहां इसकी कमी है :) –

6

मुझे लगता है कि एक कोड-कवरेज जेनरेटर विरासत प्रणाली के लिए उपयोगी होगा जो कि बीडीडी शैली परीक्षण के अधीन होने की प्रक्रिया में है क्योंकि आप यह बताने में सक्षम होंगे कि कौन सा कोड परीक्षण नहीं किया गया है। मैं एक के लिए PHPSpec में ऐसी सुविधा की सराहना करता हूं।

8

क्लॉयर उत्पन्न करने के लिए Code Coverage extension to PHPSpec का उपयोग करें।

यदि आप पीएचपीएसपीसी और अन्य टूल्स (उदाहरण के लिए) PHPUnit से कवरेज डेटा मर्ज करना चाहते हैं, तो phpcov उपकरण विलय मोड में PHP_CodeCoverage आउटपुट प्रारूप का उपयोग करें।

उदाहरण:

# phpspec.yml 
extensions: 
    - PhpSpec\Extension\CodeCoverageExtension 

code_coverage: 
    output: /tmp/coverage/phpspec.phpcoverage 
    format: php 

# phpunit.xml 
<logging> 
    <log type="coverage-php" target="/tmp/coverage/phpunit.phpcoverage" /> 
</logging> 

# from the command line 
phpcov merge --clover coverage.xml /tmp/coverage 

कि आप एक अंतिम तिपतिया घास प्रारूप में दोनों उपकरणों से कवरेज दे देंगे, जैसे Jenkins लिए उपयुक्त है।

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