2013-03-06 8 views
8

में कस्टम परीक्षण नहीं चल रहा परीक्षण मैं रेल 4.0.0.beta1 का उपयोग कर रहा हूं। मैंने दो निर्देशिकाएं जोड़े: app/services और test/servicesरेक: उपनिर्देशिका

मैं भी इस कोड, testing.rake of railties पढ़ने के आधार पर कहा:

namespace :test do 
    Rake::TestTask.new(services: "test:prepare") do |t| 
    t.libs << "test" 
    t.pattern = 'test/services/**/*_test.rb' 
    end 
end 

मैं ने पाया है कि rake test:servicestest/services में परीक्षण चलाता है; हालांकि, rake test उन परीक्षणों को नहीं चलाता है। ऐसा लगता है कि यह होना चाहिए; यहाँ code है:

Rake::TestTask.new(:all) do |t| 
    t.libs << "test" 
    t.pattern = "test/**/*_test.rb" 
end 

मैं कुछ को नजरअंदाज किया था?

उत्तर

11

अपने परीक्षण कार्य परिभाषा के बाद इस तरह की एक पंक्ति जोड़ें:

Rake::Task[:test].enhance { Rake::Task["test:services"].invoke } 

मैं वे स्वचालित रूप से उठाया जा रहा नहीं कर रहे हैं पता नहीं क्यों, लेकिन यह एकमात्र समाधान मैंने पाया कि के लिए काम करता है टेस्ट :: यूनिट।

मुझे लगता है कि अगर आप rake test:all चला रहे हैं तो यह आपके अतिरिक्त परीक्षण चलाएगा, लेकिन rake test अकेले स्निपेट के बिना नहीं होगा।

+0

अच्छा बिंदु: 'test' और' परीक्षण: all' कार्य अलग हैं। –

+0

पुन: "मुझे नहीं पता कि वे स्वचालित रूप से क्यों उठाए जा रहे हैं" - मुझे नहीं पता कि यह जानबूझकर है, या सिर्फ एक असममितता है जो परिवर्तन के रूप में विकसित की गई थी। तो मैंने एक [पुल अनुरोध पर टिप्पणी जो जोड़ा जोड़ा: सभी कार्य] (https://github.com/rails/rails/pull/9177#issuecomment-14575192)। –

+0

आपको बहुत धन्यवाद, जिम। – Ashitaka

4

(मेरे मामले में 4.1.0) एक और अधिक हाल ही रेल संस्करण का उपयोग कर उन लोगों के लिए

उपयोग Rake::TestTask के बजाय Rails::TestTask और run कार्य ओवरराइड:

namespace :test do 
    task :run => ['test:units', 'test:functionals', 'test:generators', 'test:integration', 'test:services'] 
    Rails::TestTask.new(services: "test:prepare") do |t| 
    t.pattern = 'test/services/**/*_test.rb' 
    end 
end 
3

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

यह कैसे मैं बस rake test से और निश्चित रूप से निष्पादित कार्यों के सेट में नई test:extras कार्य को शामिल करके इस (रेल का उपयोग कर 4.1.1)

# Add additional test suite definitions to the default test task here 

namespace :test do 
    Rails::TestTask.new(extras: "test:prepare") do |t| 
    t.pattern = 'test/extras/**/*_test.rb' 
    end 
end 

Rake::Task[:test].enhance ['test:extras'] 

यही अपेक्षित व्यवहार में जो परिणाम को सुलझाने समाप्त हो गया है डिफ़ॉल्ट rake। आप इस दृष्टिकोण का उपयोग इस तरह के किसी भी नए परीक्षण सूट को जोड़ने के लिए कर सकते हैं।

यदि आप रेल 3 का उपयोग कर रहे हैं तो मुझे लगता है कि Rake::TestTask में बदलना आपके लिए काम करेगा।

3

या बस rake test:all

चलाने आप डिफ़ॉल्ट रूप से सभी परीक्षण चलाने के परीक्षण कार्य ओवरराइड करने के लिए करना चाहते हैं:

namespace :test do 
    task run: ['test:all'] 
end