ฉันสามารถรันการทดสอบทั้งหมดในไฟล์เดียวด้วย:
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
ได้! ใช้นิค Quaranto ของ "M" อัญมณี ด้วยคุณสามารถพูดได้:
m spec/my_spec.rb:25
m
ขณะนี้ไม่สามารถใช้ Minitest 5.0นี้ได้
คำสั่งควรเป็น:
% 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
s หากใช้ไวยากรณ์เดียวกันในหลายคำอธิบายบล็อก ... คำแนะนำใด ๆ สำหรับการใช้การทดสอบเดี่ยวในสภาพแวดล้อมแบบนี้?
cannot load such file -- test_helper
มันบอกว่า
ruby -Itest path/to/tc_file.rb --name test_method_name
เหมือนstackoverflow.com/a/15714985/327786
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
จากนั้นเรียกยกตัวอย่างเช่น
หากคุณใช้ MiniTest กับ Rails 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
คุณสามารถใช้สิ่งนี้เพื่อเรียกใช้ไฟล์เดียว:
rake test TEST=test/path/to/file.rb
ฉันยังใช้
ruby -I"lib:test" test/path/to/file.rb
เพื่อการแสดงผลที่ดีขึ้น
มี 2 วิธีในการทำ:
Rake::TestTask
เป้าหมายเพื่อใช้โหลดเดอร์ทดสอบอื่นRake::TestTask
(จาก rake 0.8.7) ในทางทฤษฎีสามารถส่งตัวเลือกเพิ่มเติมไปยังMiniTest::Unit
ด้วย"TESTOPTS=blah-blah"
ตัวเลือกบรรทัดคำสั่งตัวอย่างเช่น:
% rake test TEST = test / test_foobar.rb TESTOPTS = "- ชื่อ test_foobar1 -v"
ในทางปฏิบัติตัวเลือก--name
(ตัวกรองสำหรับชื่อการทดสอบ) จะไม่ทำงานเนื่องจากการคราดภายใน ในการแก้ไขปัญหานั้นคุณจะต้องเขียนโปรแกรมแก้ไขลิงตัวเล็ก ๆ ใน Rakefile ของคุณ:
# 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 ให้พิมพ์
% ruby -r minitest / autorun -e '' - - ช่วย
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
หากคุณใช้เทิร์นเจมด้วย minitest เพียงให้ใช้Turn.config.pattern
ตัวเลือกเนื่องจาก Turn Minitest runner ไม่เคารพตัวเลือก --name ใน ARG
name
ตัวเลือก ขอบคุณ! เมื่อถึงคราวนั้นไม่ได้รับการดูแลรักษาอีกต่อไปฉันวางแผนที่จะย้ายไปยังผู้สื่อข่าวรายย่อย
ฉันกำลังมองหาฟังก์ชั่นที่คล้ายกับ:
rspec path / 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
จะทำมัน
rails test path/to/test_file.rb:25
ดู @Derek_Hill ans - นำมาจากguide.rubyonrails.org/testing.html#the-rails-test-runner