Câu trả lời:
LƯU Ý: Điều này không chạy thử nghiệm thông qua rake
. Vì vậy, bất kỳ mã nào bạn có Rakefile
sẽ KHÔNG được thực thi.
Để chạy thử nghiệm đơn, sử dụng lệnh sau từ thư mục chính của dự án rails của bạn:
ruby -I test test/unit/my_model_test.rb -n test_name
Điều này chạy một thử nghiệm duy nhất có tên "tên", được định nghĩa trong lớp MyModelTest trong tệp được chỉ định. Test_name được hình thành bằng cách lấy tên kiểm tra, thêm vào đó bằng từ "kiểm tra", sau đó phân tách các từ bằng dấu gạch dưới. Ví dụ:
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
Bạn có thể chạy cả hai bài kiểm tra thông qua:
ruby -I test test/unit/my_model_test.rb
và chỉ thử nghiệm thứ hai thông qua
ruby -I test test/unit/my_model_test.rb -n test_invalid_with_bad_attributes
0 tests, 0 assertions, 0 failures, 0 errors
. Đường ray 3.0.7.
-n "/good/"
. Shell thoát luôn thú vị, vì vậy tôi có xu hướng gắn bó với các biểu thức đơn giản, nhưng nó dễ dàng hơn nhiều so với việc viết ra tên thử nghiệm đầy đủ mọi lúc.
test/
thư mục. Ví dụ, nếu tôi muốn chạy thử nghiệm, activesupport/test/core_ext/array_ext_test.rb
tôi nên ở trong activesupport/
đầu tiên.
-n "/good/"
đã làm việc.
Chạy một tệp thử nghiệm :
rake test TEST=tests/functional/accounts_test.rb
Chạy một thử nghiệm trong một tệp thử nghiệm:
rake test TEST=tests/functional/accounts_test.rb TESTOPTS="-n /paid accounts/"
(Từ nhận xét của @Puhlze.)
rake test TEST=tests/functional/accounts_test.rb TESTOPTS="-n '/paid accounts/'"
(kèm theo /paid accounts/
dấu ngoặc đơn)
Đối với đường ray 5:
rails test test/models/my_model.rb
bin/rails test test/models/user_test.rb:27
Nhờ @James, câu trả lời dường như là:
rails test test/models/my_model.rb:22
Giả sử 22 là số dòng của bài kiểm tra đã cho. Theo đường ray giúp:
$ rails test --help
Bạn có thể chạy thử nghiệm đơn bằng cách nối thêm số dòng vào tên tệp:
bin/rails test test/models/user_test.rb:27
Ngoài ra, xin lưu ý rằng bài kiểm tra của bạn nên kế thừa từ ActionDispatch :: IntegrationTest để điều này hoạt động (Đó là lỗi của tôi):
class NexApiTest < ActionDispatch::IntegrationTest
.
.
.
Trong đường ray 5,
Tôi đã sử dụng cách này để chạy tệp thử nghiệm duy nhất (tất cả các thử nghiệm trong một tệp)
rails test -n /TopicsControllerTest/ -v
xem tại đây https://stackoverflow.com/a/41183694/3626659
Để chạy thử nghiệm duy nhất trong bộ Rails thực tế:
bundle exec ruby -I"railties/test" actionpack/test/template/form_options_helper_test.rb
Đó là một câu hỏi nửa đêm ngớ ngẩn của tôi. Rails vui lòng in lệnh mà nó đang thực thi rake test
. Phần còn lại là một bài tập cắt và dán.
~/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"
Cách tốt nhất là nhìn trực tiếp vào các hướng dẫn: http://guides.rubyonrails.org/contribution_to_ruby_on_rails.html#ricky-tests
cd actionmailer
bundle exec ruby -w -Itest test/mail_layout_test.rb -n test_explicit_class_layout
Nếu bạn muốn chạy thử nghiệm đơn lẻ, bạn có thể chạy chúng dưới dạng tập lệnh Ruby thông thường
ruby actionmailer/test/mail_layout_test.rb
Bạn cũng có thể chạy toàn bộ bộ phần mềm (ví dụ: ActiveRecord hoặc ActionMailer) bằng cách cd
vào thư mục và chạy rake test
bên trong đó.
require File.join(File.dirname(__FILE__), '..', 'test_helper')
cd
-ing in. Nói rõ hơn (Tôi không chắc là tôi có đọc sai điều này không, nhưng bạn đã nói "các tệp kiểm tra được tạo"), đây là cho chính thư viện Rails, không phải là một dự án Rails.
Đầu tiên, truy cập vào thư mục của lib bạn muốn kiểm tra (điều này rất quan trọng) và sau đó chạy:
~/Projects/rails/actionview (master)$ ruby -I test test/template/number_helper_test.rb
Thư mục Rails
bundle install
bundle exec ruby -I"activerecord/test" activerecord/test/cases/relation/where_test.rb
Lưu ý bạn cần tải thư mục thích hợp: "activerecord / test" (nơi bạn đã kiểm tra)