ฉันจะเรียกใช้การทดสอบเดี่ยวจากชุดทดสอบรางได้อย่างไร
rake test ANYTHING
ดูเหมือนจะไม่ช่วย
ฉันจะเรียกใช้การทดสอบเดี่ยวจากชุดทดสอบรางได้อย่างไร
rake test ANYTHING
ดูเหมือนจะไม่ช่วย
คำตอบ:
หมายเหตุ: สิ่งนี้ไม่ได้เรียกใช้การทดสอบผ่านrake
ไฟล์. ดังนั้นรหัสใด ๆ ที่คุณมีRakefile
จะไม่ถูกเรียกใช้งาน
ในการเรียกใช้การทดสอบเพียงครั้งเดียวให้ใช้คำสั่งต่อไปนี้จากไดเร็กทอรีหลักของโปรเจ็กต์รางของคุณ:
ruby -I test test/unit/my_model_test.rb -n test_name
สิ่งนี้รันการทดสอบเดี่ยวชื่อ "name" ซึ่งกำหนดไว้ในคลาส MyModelTest ในไฟล์ที่ระบุ test_name เกิดจากการใช้ชื่อการทดสอบโดยนำหน้าด้วยคำว่า "test" จากนั้นคั่นคำด้วยเครื่องหมายขีดล่าง ตัวอย่างเช่น:
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
0 tests, 0 assertions, 0 failures, 0 errors
แล้ว ราง 3.0.7
-n "/good/"
นี้: การหนีด้วยเชลล์เป็นเรื่องสนุกเสมอดังนั้นฉันมักจะยึดติดกับ regexes ธรรมดา ๆ แต่มันง่ายกว่าการเขียนชื่อเต็มตลอดเวลา
test/
โฟลเดอร์ ตัวอย่างเช่นถ้าฉันต้องการเรียกใช้การทดสอบactivesupport/test/core_ext/array_ext_test.rb
ฉันควรจะเข้ามาactivesupport/
ก่อน
-n "/good/"
ทำงาน
เรียกใช้ไฟล์ทดสอบ :
rake test TEST=tests/functional/accounts_test.rb
เรียกใช้การทดสอบเดียวในไฟล์ทดสอบ:
rake test TEST=tests/functional/accounts_test.rb TESTOPTS="-n /paid accounts/"
(จากความคิดเห็นของ @Puhlze)
rake test TEST=tests/functional/accounts_test.rb TESTOPTS="-n '/paid accounts/'"
(ใส่/paid accounts/
เครื่องหมายคำพูดเดี่ยว)
สำหรับราง 5:
rails test test/models/my_model.rb
bin/rails test test/models/user_test.rb:27
ขอบคุณ @James คำตอบน่าจะเป็น:
rails test test/models/my_model.rb:22
สมมติว่า 22 คือหมายเลขบรรทัดของการทดสอบที่กำหนด ตามความช่วยเหลือทางรถไฟ:
$ rails test --help
คุณสามารถเรียกใช้การทดสอบเพียงครั้งเดียวโดยการต่อท้ายหมายเลขบรรทัดเข้ากับชื่อไฟล์:
bin/rails test test/models/user_test.rb:27
นอกจากนี้โปรดทราบว่าการทดสอบของคุณควรสืบทอดจาก ActionDispatch :: IntegrationTest เพื่อให้สิ่งนี้ทำงานได้ (นั่นคือความผิดพลาดของฉัน):
class NexApiTest < ActionDispatch::IntegrationTest
.
.
.
ในราง 5,
ฉันใช้วิธีนี้เพื่อเรียกใช้ไฟล์ทดสอบเดี่ยว (การทดสอบทั้งหมดในไฟล์เดียว)
rails test -n /TopicsControllerTest/ -v
ในการเรียกใช้การทดสอบเดี่ยวในชุด Rails จริง:
bundle exec ruby -I"railties/test" actionpack/test/template/form_options_helper_test.rb
วิธีที่ดีที่สุดคือดูคำแนะนำโดยตรง: http://guides.rubyonrails.org/contributing_to_ruby_on_rails.html#running-tests
cd actionmailer
bundle exec ruby -w -Itest test/mail_layout_test.rb -n test_explicit_class_layout
นั่นเป็นคำถามตอนเที่ยงคืนโง่ ๆ ของฉัน 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"
หากคุณต้องการเรียกใช้การทดสอบเดียวคุณสามารถเรียกใช้เป็นสคริปต์ Ruby ปกติ
ruby actionmailer/test/mail_layout_test.rb
คุณยังสามารถรันทั้งชุด (เช่น ActiveRecord หรือ ActionMailer) โดยcd
-ing เข้าไปในไดเร็กทอรีและเรียกใช้rake test
ภายในที่นั่น
require File.join(File.dirname(__FILE__), '..', 'test_helper')
cd
-ing เข้า เพื่อความชัดเจน (ฉันไม่แน่ใจว่าฉันอ่านผิดหรือเปล่า แต่คุณพูดว่า "สร้างไฟล์ทดสอบ") นี่เป็นของไลบรารี Rails เองไม่ใช่โครงการ Rails
ในสถานการณ์ของฉันสำหรับการrake
ทำงานเท่านั้นTESTOPTS="-n='/sample/'"
:
bundle exec rake test TEST=test/system/example_test.rb TESTOPTS="-n='/sample/'"
ขั้นแรกให้เข้าถึงโฟลเดอร์ของ lib ที่คุณต้องการทดสอบ (สิ่งนี้สำคัญ) จากนั้นเรียกใช้:
~/Projects/rails/actionview (master)$ ruby -I test test/template/number_helper_test.rb
โฟลเดอร์ Rails
bundle install
bundle exec ruby -I"activerecord/test" activerecord/test/cases/relation/where_test.rb
โปรดทราบว่าคุณต้องโหลดโฟลเดอร์ที่เหมาะสม: "activerecord / test" (ที่คุณมีการทดสอบ)