2012-01-16 12 views
8

प्रस्तावना
मैंने अभी रूबी में प्रवेश करना शुरू कर दिया है और न केवल भाषा सीखने की कोशिश की बल्कि कुछ विकास रणनीतियों को भी सीखने की कोशिश की है। एक शुरुआत के रूप में मैं टेस्ट और व्यवहार संचालित विकास पर ध्यान केंद्रित कर रहा हूं। (हाँ, मैं तुलना प्रयोजनों के लिए दोनों कर रहा हूँ)आरएसपीसी 2 के लिए आरसीओवी कवरेज का सही ढंग से पता नहीं लगा रहा है? (रेल नहीं!)

मेरे छोटे सॉफ्टवेयर परियोजना के साथ

मैं उपयोग कर रहा हूँ

  • unittest (TDD)
  • ककड़ी (BDD)
  • Rspec (TDD और BDD)

विभिन्न स्थानों पर मुझे आरसीओवी का एक उपकरण के रूप में सामना करना पड़ा ताकि मुझे यह बताने के लिए कि मेरा वास्तविक कोड वास्तव में कितना परीक्षण कर रहा है।

मैं UnitTests की covarage विश्लेषण के लिए मेरी Rakefile में निम्नलिखित RakeTask की स्थापना:

desc "Run RCov to get coverage of UnitTests" 
Rcov::RcovTask.new(:rcov_units) do |t| 
    t.pattern = 'tests/**/tc_*.rb' 
    t.verbose = true 
    t.rcov_opts << "--html" 
    t.rcov_opts << "--text-summary" 
    t.output_dir = "coverage/tests" 
end 

यह ठीक काम करता है और मैं coverage/tests में एक अच्छा रंग एचटीएमएल रिपोर्ट हो रही है।

समस्या परिचय
इसी प्रकार मैं RCov निम्नलिखित RakeTasks मेरी ऐनक के कवरेज के विश्लेषण के लिए प्रयोग की जाने वाली लिखा है:

desc "Run RCov to get coverage of Specs" 
Rcov::RcovTask.new(:rcov_spec) do |t| 
    t.pattern = 'spec/**/*_spec.rb' 
    t.verbose = true 
    t.rcov_opts << "--html" 
    t.rcov_opts << "--text-summary" 
    t.output_dir = "coverage/spec" 
end 

समस्या परिभाषा
हालांकि, coverage/spec दिखता में सृजित HTML रिपोर्ट किसी भी तरह अधूरा और लगभग असफल रहा।

किसी भी परीक्षण विधि निकायों को कवर और इस प्रकार लाल के रूप में चिह्नित नहीं किया जाता है। हालांकि, मुझे 100% यकीन है कि वे चश्मा के भीतर निष्पादित कर रहे हैं। केवल def method_name(args) और class ClassName को 'हरी' चिह्नित किया गया है। (साथ ही attr_reader :instance_variable के साथ लाइनें)

क्या मुझे कुछ याद आ रही है?


$: ruby --version 
ruby 1.8.7 (2011-02-18 patchlevel 334) [x86_64-linux] 

$: rspec --version 
2.8.0 

$: rcov --version 
rcov 0.9.11 2010-02-28 

$: rake --version 
rake, version 0.9.2 
+2

यदि आप रूबी 1.9 पर स्विचिंग का सुझाव दे सकते हैं और सरलकोव के साथ आरसीओवी को बदल सकते हैं (केवल 1.9 के साथ काम करता है)। – Schmurfy

उत्तर

2

यकीन है कि आप काफी पहले rcov की आवश्यकता होती है कर रहे हैं।

http://rubydoc.info/github/relevance/rcov/master/Rcov/CodeCoverageAnalyzer से:

ध्यान दें कि आप कोड का विश्लेषण करना चाहते हैं पार्स किया गया है (अर्थात इससे पहले कि यह भरी हुई या आवश्यक हो जाता है) से पहले 'rcov' की आवश्यकता होगी। आप या तो आरआरसीओवी कमांड लाइन विकल्प के साथ रूबी को आमंत्रित कर सकते हैं या बस:

3

मुझे भी इसी तरह की समस्या है। मुझे 100% यकीन है कि जब मैं उन्हें आरसीओवी जीतता हूं तो चश्मा निष्पादित नहीं होते हैं। लेकिन जब मैं आरसीओवी अक्षम करता हूं तो वे करते हैं।

संस्करण 2.6.0 में आरएसपीसी को डाउनग्रेड करने में मेरी मदद मिली।

+1

पता नहीं क्यों यह अपरिवर्तित नहीं था ... आरसीओवी और आरएसपीसी (> 2.6.0) के साथ एक समस्या प्रतीत होती है जहां कवरेज प्रतिशत अब और समझ में नहीं आता है। (मैं आरएसपीसी 2.9 का उपयोग कर रहा था) –

0

मैं जोड़कर इस तय:

RSpec::Core::Runner.autorun

मेरी कल्पना फ़ाइल की तह तक

; आरएसपीईसी के साथ भी काम किया 2.9