रेल परीक्षण सूट से एकल परीक्षण कैसे चलाया जाए?


जवाबों:


158

नोट: यह परीक्षण नहीं चलाता है rake। तो आपके पास कोई भी कोड Rakefileनिष्पादित नहीं होगा।

एकल परीक्षण चलाने के लिए, अपने रेल प्रोजेक्ट की मुख्य निर्देशिका से निम्न कमांड का उपयोग करें:

ruby -I test test/unit/my_model_test.rb -n test_name

यह निर्दिष्ट फ़ाइल में MyModelTest वर्ग में परिभाषित "नाम" नामक एकल परीक्षण चलाता है। Test_name परीक्षण नाम लेने से बनता है, इसे "परीक्षण" शब्द के साथ जोड़ते हैं, फिर शब्दों को अंडरस्कोर के साथ अलग करते हैं। उदाहरण के लिए:

class MyModelTest < ActiveSupport::TestCase

  test "valid with good attributes" do
    # do whatever you do
  end

  test "invalid with bad attributes" do
    # do whatever you do
  end
end

आप दोनों परीक्षणों को इसके माध्यम से चला सकते हैं:

ruby -I test test/unit/my_model_test.rb

और सिर्फ दूसरी परीक्षा

ruby -I test test/unit/my_model_test.rb -n test_invalid_with_bad_attributes

4
यह मेरे लिए काम नहीं करता है (कार्यात्मक या इकाई परीक्षणों पर)। मुझे मिलता है 0 tests, 0 assertions, 0 failures, 0 errors। रेल 3.0.7।
बी सात

10
मैं व्यक्तिगत रूप से रेगेक्स फॉर्म का प्रशंसक हूं -n "/good/":। शेल बचना हमेशा मजेदार होता है, इसलिए मैं सरल रीगेक्स से चिपक जाता हूं, लेकिन हर समय पूरा टेस्ट नाम लिखने से कहीं ज्यादा आसान है।
ग्रौक्स

4
यह नोट करना महत्वपूर्ण है कि इस काम के लिए, आपको मुख्य निर्देशिका में नहीं होना चाहिए जैसा कि प्रतिक्रिया में निर्दिष्ट है लेकिन उपनिर्देशिका में test/फ़ोल्डर शामिल है । उदाहरण के लिए, यदि मैं परीक्षण चलाना चाहता हूं तो मुझे पहले activesupport/test/core_ext/array_ext_test.rbहोना चाहिए activesupport/
विंसेंट बी

3
@Groxx - अंत में एक समाधान! धन्यवाद! -n "/good/"काम किया।
बी सेवन

2018+ में इसे चलाने में सावधानी बरतें। यह रेल में निर्मित कुछ परीक्षण कार्यों को दरकिनार करता है (जैसे db: टेस्ट: तैयार) जो कई चीजों के लिए उपयोग किया जाता है, जैसे कि स्थिरता डेटा के लिए स्थानीय डेटा को स्वैप करना और इसे फिर से बहाल करना। इस रनिंग ने मेरे स्थानीय डेटाबेस को उड़ा दिया। एक समाधान पर विचार करें जो अंतर्निहित रेल परीक्षण कार्यों का उपयोग करता है, जैसे कि stackoverflow.com/a/47006811/1154642 (जो मेरे लिए काम करता है)।
ब्रायनबराबून

99

एक परीक्षण फ़ाइल चलाएँ :

rake test TEST=tests/functional/accounts_test.rb

परीक्षण फ़ाइल में एकल परीक्षण चलाएँ :

rake test TEST=tests/functional/accounts_test.rb TESTOPTS="-n /paid accounts/"

(@Puhlze की टिप्पणी से।)


10
इसके अलावा, यदि आप दिए गए फ़ाइल में एकल परीक्षण चलाना चाहते हैं, तो आप एक TESTOPTS पर्यावरण संस्करण जोड़ सकते हैं जिसे परीक्षण में पास कर दिया जाएगा। ईजी रेक टेस्ट टेस्ट = टेस्ट / फंक्शनल / अकाउंट्स_टेस्ट.आरबी टेस्ट्स = "- एन / पेड अकाउंट्स /"
accounts

1
यदि बाद वाला परीक्षण कमांड काम नहीं करता है, तो कोशिश करें rake test TEST=tests/functional/accounts_test.rb TESTOPTS="-n '/paid accounts/'"( /paid accounts/एकल उद्धरणों के साथ संलग्न )
rrw


38

रेल के लिए 5:

rails test test/models/my_model.rb

9
लेकिन यह फ़ाइल में सभी परीक्षण मामलों को चलाता है, सवाल एकल परीक्षण चलाने के लिए कहता है ...
user000001

आप एक फ़ाइल नाम के लिए एक पंक्ति संख्या जोड़कर एक एकल परीक्षण चला सकते हैं:bin/rails test test/models/user_test.rb:27
सेगफॉल्ट

29

@James का शुक्रिया, जवाब लगता है:

rails test test/models/my_model.rb:22

मान लिया गया कि 22 दिए गए परीक्षण की पंक्ति संख्या है। रेल की मदद के अनुसार:

 $ rails test --help

आप फ़ाइल नाम पर एक पंक्ति संख्या जोड़कर एक एकल परीक्षण चला सकते हैं:

    bin/rails test test/models/user_test.rb:27

इसके अलावा, कृपया ध्यान दें कि आपके परीक्षण को ActionDispatch :: से एकीकरण करना चाहिए। इस कार्य के लिए एकीकरण (यह मेरी गलती थी):

class NexApiTest < ActionDispatch::IntegrationTest
.
.
.

4
यह रेल गाइड के आधार पर सबसे अच्छा उत्तर लगता है, कम से कम एक विशिष्ट लाइन के परीक्षण के लिए।
tfantina 10

12

रेल में 5,

मैंने सिंगल टेस्‍ट फाइल चलाने के लिए इस तरह का प्रयोग किया (एक फाइल में सभी परीक्षण)

rails test -n /TopicsControllerTest/ -v

यहां देखें https://stackoverflow.com/a/41183694/3626659


1
यह हाल के रेल संस्करणों के लिए सवाल का सबसे अच्छा जवाब है, +1
user000001

5

वास्तविक रेल सुइट में एकल परीक्षण चलाने के लिए:

bundle exec ruby -I"railties/test" actionpack/test/template/form_options_helper_test.rb

3

यह एक मूर्खतापूर्ण आधी रात का सवाल था। रेल कृपया उस कमांड को प्रिंट करता है जिस पर वह कार्य कर रहा है rake test। बाकी एक कट और पेस्ट व्यायाम है।

~/projects/rails/actionpack (my2.3.4)$ ruby -I"lib:test" "/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader.rb" "test/controller/base_test.rb"


2

यदि आप एकल परीक्षण चलाना चाहते हैं, तो आप उन्हें नियमित रूप से रूबी स्क्रिप्ट के रूप में चला सकते हैं

ruby actionmailer/test/mail_layout_test.rb

आप एक संपूर्ण सुइट (जैसे। ActiveRecord या ActionMailer) cdको भी निर्देशिका में चलाकर और rake testवहां अंदर चला सकते हैं।


1
रेल में नहीं - कम से कम डिफ़ॉल्ट रूप से बनाई गई परीक्षण फ़ाइलों के साथ नहीं। उन्हें पहली पंक्ति में "test_helper" की आवश्यकता होती है, लेकिन लोड पथ को समय पर सेट नहीं किया जाएगा। यदि आप हर पहली पंक्ति को एक स्पष्ट आवश्यकता ("File.join (File.dirname ( FILE ), '..', '', 'test_helper')") में बदलते हैं, तो आपका समाधान काम करता है।
जेम्स ए। रोसेन

अहम, वहrequire File.join(File.dirname(__FILE__), '..', 'test_helper')
जेम्स ए। रोसेन

@ जीयस डबल-चेक किया गया। पहले एक काम नहीं करता, लेकिन इसमें काम cdकरता है। बस स्पष्ट होने के लिए (मुझे यकीन नहीं है कि मैं इसे गलत पढ़ रहा हूं, लेकिन आपने "उत्पन्न परीक्षण फाइलें" कहा था), यह रेल पुस्तकालय के लिए है, कि रेल परियोजना।
अनूपाजो

2

rakeकेवल काम करने की मेरी स्थिति में TESTOPTS="-n='/sample/'":

bundle exec rake test TEST=test/system/example_test.rb TESTOPTS="-n='/sample/'"

0

सबसे पहले, उस परिवाद के फ़ोल्डर तक पहुंचें जिसे आप परीक्षण करना चाहते हैं (यह महत्वपूर्ण है) और फिर चलाएं:

~/Projects/rails/actionview (master)$ ruby -I test test/template/number_helper_test.rb 

0

फ़ोल्डर को रेल करता है

  bundle install
  bundle exec ruby -I"activerecord/test" activerecord/test/cases/relation/where_test.rb 

ध्यान दें कि आपको उपयुक्त फ़ोल्डर लोड करने की आवश्यकता है: "एक्टिवरकॉर्ड / टेस्ट" (जहां आपके पास परीक्षण है)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.