मैं एक ही फ़ाइल में सभी परीक्षण चला सकता हूं:
rake test TEST=path/to/test_file.rb
हालाँकि, अगर मैं उस फ़ाइल में सिर्फ एक परीक्षण चलाना चाहता हूं, तो मैं यह कैसे करूंगा?
मैं समान कार्यक्षमता की तलाश में हूं:
rspec path/to/test_file.rb -l 25
मैं एक ही फ़ाइल में सभी परीक्षण चला सकता हूं:
rake test TEST=path/to/test_file.rb
हालाँकि, अगर मैं उस फ़ाइल में सिर्फ एक परीक्षण चलाना चाहता हूं, तो मैं यह कैसे करूंगा?
मैं समान कार्यक्षमता की तलाश में हूं:
rspec path/to/test_file.rb -l 25
जवाबों:
मैं rspec पथ / / to file.rb -l 25 के लिए समान कार्यक्षमता की तलाश कर रहा हूं
हाँ! Nick Quaranto के "m" रत्न का उपयोग करें । इसके साथ आप कह सकते हैं:
m spec/my_spec.rb:25
कमांड होनी चाहिए:
% rake test TEST=test/test_foobar.rb TESTOPTS="--name=test_foobar1 -v"
TESTOPTS=...
दूर
-v
है?
आपने कोशिश की है:
ruby path/to/test_file.rb --name test_method_name
specify {}
? वे बस के रूप में दिखाते हैं test_0001_anonymous
... और कई test_0001_anonymous
एस हो सकते हैं यदि एक ही वाक्यविन्यास का उपयोग कई वर्णन ब्लॉकों में किया जाता है ... इस तरह के वातावरण में एकल परीक्षण चलाने के लिए कोई सुझाव?
cannot load such file -- test_helper
।
ruby -Itest path/to/tc_file.rb --name test_method_name
तरह उपयोग करें
bundle exec ruby -I lib path/to --name test_fit
कोई मणि आवश्यक:
ruby -Itest test/lib/test.rb --name /some_test/
स्रोत: http://blog.arvidandersson.se/2012/03/28/minimalicous-testing-in-ruby-1-9
यह उन चीजों में से एक है जो मुझे string name definition
परीक्षणों में परेशान करती है ।
जब आपके पास ... हो:
def test_my_test
end
आप हमेशा जानते हैं कि आपका परीक्षण कैसे नाम दिया गया है ताकि आप इसे इस तरह से निष्पादित कर सकें:
ruby my_test -n test_my_test
लेकिन जब आपके पास कुछ ऐसा हो:
it "my test" do
end
आपको कभी भी यकीन नहीं है कि इस परीक्षा को वास्तव में आंतरिक रूप से कैसे नामित किया जाता है ताकि आप -n
सीधे विकल्प का उपयोग न कर सकें।
यह जानने के लिए कि इस परीक्षण को आंतरिक रूप से कैसे नाम दिया गया है, आपके पास केवल एक विकल्प है: लॉग में देख यह पता लगाने की कोशिश करने के लिए पूरी फ़ाइल निष्पादित करें।
मेरा वर्कअराउंड (अस्थायी रूप से) परीक्षण के नाम में कुछ जोड़ने के लिए बहुत ही अनूठा है:
it "my test xxx" do
end
और फिर '-n' पैरामीटर के RegEx संस्करण का उपयोग करें जैसे:
ruby my_test.rb -n /xxx/
__method__
वर्तमान में निष्पादित विधि (आपके परीक्षण, इस उदाहरण में) के संदर्भ में कॉल करके इसकी जांच कर सकते हैं । वर्तमान कार्यान्वयन कुछ इस तरह से परिणाम देता है "does not break my stuff".gsub(" ", "_").prepend("test_")
। फिर, उदाहरण के लिए, भागो ruby -Itest test/integration/stuff_flow_test.rb --name test_does_not_break_my_stuff
।
यदि आप मिनीटेस्ट का उपयोग रेल के साथ 5+ कर रहे हैं तो एकल फ़ाइल में सभी परीक्षण चलाने का सबसे अच्छा तरीका है:
bin/rails test path/to/test_file.rb
और एक परीक्षण के लिए (जैसे लाइन 25 पर):
bin/rails test path/to/test_file.rb:25
Http://guides.rubyonrails.org/testing.html#the-rails-test-runner देखें
इसे करने के 2 तरीके हैं:
Rake::TestTask
एक अलग परीक्षण लोडर का उपयोग करने के लिए हैक लक्ष्य।Rake::TestTask
(रेक से 0.8.7) सैद्धांतिक रूप से अतिरिक्त विकल्पों को पास करने में सक्षम MiniTest::Unit
है"TESTOPTS=blah-blah"
कमांड लाइन विकल्प के , उदाहरण के लिए:
% रेक टेस्ट TEST = test / test_foobar.rb TESTOPTS = "- name test_foobar1 -v"
अभ्यास में, विकल्प --name
(परीक्षण नामों के लिए एक फिल्टर) काम नहीं करेगा, रेक इंटर्नल के कारण। यह तय करने के लिए कि आपको अपने राकफाइल में एक छोटा बंदर पैच लिखना होगा:
# overriding the default rake tests loader
class Rake::TestTask
def rake_loader
'test/my-minitest-loader.rb'
end
end
# our usual test terget
Rake::TestTask.new {|i|
i.test_files = FileList['test/test_*.rb']
i.verbose = true
}
इस पैच को आपको एक फ़ाइल बनाने की आवश्यकता है test/my-minitest-loader.rb
:
ARGV.each { |f|
break if f =~ /^-/
load f
}
Minitest के सभी संभावित विकल्पों को प्रिंट करने के लिए, टाइप करें
% रूबी -r मिनिटेस्ट / ऑटोरन -''-help
rake
(0.9.2) के साथ सही ढंग से काम करता है और बंदर के पैच की आवश्यकता नहीं होती है।
TESTOPTS="--name test_foobar"
काम नहीं करता है, लेकिन TESTOPTS="--name=test_foobar"
काम करता है।
आप --name
उसके नाम या उसके नाम से एक संख्या द्वारा परीक्षण चलाने के लिए पास कर सकते हैं :
-n, --name PATTERN Filter run on /regexp/ or string.
उदाहरण के लिए:
$ ruby spec/stories/foo_spec.rb --name 3
FAIL (0:00:00.022) test_0003_has foo
Expected: "foo"
Actual: nil
यह ध्वज मिनिटेस्ट की README में प्रलेखित है ।
यदि आप मिनिटेस्ट के साथ टर्न मणि का उपयोग कर रहे हैं, तो Turn.config.pattern
विकल्प का उपयोग करना सुनिश्चित करें क्योंकि टर्न मिनिटेस्ट रनर ARGs में --name विकल्प का सम्मान नहीं करता है।
name
विकल्प निगल रही थी । धन्यवाद! टर्न होने के कारण अब इसे बनाए रखा नहीं जा रहा है, मैं मिनिटेस्ट-रिपोर्टरों को प्रवास करने की योजना बना रहा हूं
मैं समान कार्यक्षमता की तलाश में हूं:
rspec पथ / to / test_file.rb -l 25
एक रत्न है जो ठीक यही करता है minitest-line
:।
gem install minitest-line
ruby test/my_file -l 5
मैं उपयोग करता हूं ruby /path/to/test -n /distinguishable word/
संपादित करें: के
-n
लिए एक आशुलिपि है --name
। distinguishable word
आप परीक्षण विवरण में कोई भी स्ट्रिंग डाल सकते हैं, मैं आमतौर पर कुछ यादृच्छिक शब्द का उपयोग करता हूं जो मुझे पता है कि अन्य परीक्षणों के विवरण में मौजूद नहीं होंगे।
-n
पैरामीटर का क्या मतलब है?
--name
। बस एक सुविधा की बात। / Regex / के साथ विशेष रूप से उपयोगी, मैं आमतौर पर कुछ यादृच्छिक शब्द एक परीक्षण नाम में डाल देता हूं (जो मुझे पता है कि अन्य परीक्षणों के विवरण में मौजूद नहीं होगा)।
निम्नलिखित काम करेंगे
def test_abc
end
test "hello world"
end
इससे चल सकता है
bundle exec ruby -I test path/to/test -n test_abc
bundle exec ruby -I test path/to/test -n test_hello_word
rails test path/to/test_file.rb:25
@Derek_Hill ans - guide.rubyonrails.org/testing.html#the-rails-test-runner