Yanıtlar:
NOT: Bu, testi üzerinden çalıştırmaz rake
. Bu yüzden, sahip olduğunuz hiçbir kod Rakefile
çalıştırılmayacaktır.
Tek bir test çalıştırmak için, rails projenizin ana dizininden aşağıdaki komutu kullanın:
ruby -I test test/unit/my_model_test.rb -n test_name
Bu, belirtilen dosyadaki MyModelTest sınıfında tanımlanan "ad" adlı tek bir testi çalıştırır. Test_name, test adı alınarak, başına "test" sözcüğü eklenerek ve ardından sözcükler alt çizgilerle ayrılarak oluşturulur. Örneğin:
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
Her iki testi şu yolla çalıştırabilirsiniz:
ruby -I test test/unit/my_model_test.rb
ve üzerinden sadece ikinci test
ruby -I test test/unit/my_model_test.rb -n test_invalid_with_bad_attributes
0 tests, 0 assertions, 0 failures, 0 errors
. Raylar 3.0.7.
-n "/good/"
. Kabuktan kaçmak her zaman eğlencelidir, bu yüzden basit normal ifadelere bağlı kalmaya meyilliyim, ancak her zaman tam test adını yazmaktan çok daha kolay.
test/
klasörü içeren alt dizinde olmanız gerektiğine dikkat etmek önemlidir . Örneğin, testi çalıştırmak activesupport/test/core_ext/array_ext_test.rb
istersem activesupport/
ilk önce ben olmalıyım .
-n "/good/"
çalıştı.
Bir test dosyası çalıştırın :
rake test TEST=tests/functional/accounts_test.rb
Bir test dosyasında tek bir test çalıştırın :
rake test TEST=tests/functional/accounts_test.rb TESTOPTS="-n /paid accounts/"
(@Puhlze'nin yorumundan.)
rake test TEST=tests/functional/accounts_test.rb TESTOPTS="-n '/paid accounts/'"
( /paid accounts/
tek tırnak işaretlerini
Raylar 5 için:
rails test test/models/my_model.rb
bin/rails test test/models/user_test.rb:27
@James sayesinde cevap şöyle görünüyor:
rails test test/models/my_model.rb:22
22'nin verilen testin satır numarası olduğunu varsayarsak. Raylara göre yardım:
$ rails test --help
Dosya adına bir satır numarası ekleyerek tek bir test çalıştırabilirsiniz:
bin/rails test test/models/user_test.rb:27
Ayrıca, bunun çalışması için testinizin ActionDispatch :: IntegrationTest'ten miras alması gerektiğini lütfen unutmayın (Bu benim hatamdı):
class NexApiTest < ActionDispatch::IntegrationTest
.
.
.
Raylarda 5,
Tek bir test dosyasını çalıştırmak için bu yolu kullandım (tüm testler tek bir dosyada)
rails test -n /TopicsControllerTest/ -v
buraya bakın https://stackoverflow.com/a/41183694/3626659
Gerçek Rails paketinde tek bir test çalıştırmak için:
bundle exec ruby -I"railties/test" actionpack/test/template/form_options_helper_test.rb
En iyi yol, doğrudan kılavuzlara bakmaktır: 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
Bu aptalca bir gece yarısı sorumdu. Rails, üzerinde çalıştığı komutu nazikçe yazdırır rake test
. Gerisi bir kes ve yapıştır egzersizidir.
~/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"
Tek bir test çalıştırmak istiyorsanız, bunları normal bir Ruby betiği olarak çalıştırabilirsiniz.
ruby actionmailer/test/mail_layout_test.rb
Ayrıca cd
dizine -ing yaparak ve rake test
orada çalıştırarak tüm paketi (örn. ActiveRecord veya ActionMailer) çalıştırabilirsiniz .
require File.join(File.dirname(__FILE__), '..', 'test_helper')
cd
içeri giriyor. Açıkça söylemek gerekirse (bunu yanlış okuyup okumadığımdan emin değilim, ancak "oluşturulmuş test dosyaları" dediniz), bu bir Rails projesi değil , Rails kitaplığının kendisi içindir .
İlk önce, test etmek istediğiniz kütüphanenin klasörüne erişin (bu önemlidir) ve ardından çalıştırın:
~/Projects/rails/actionview (master)$ ruby -I test test/template/number_helper_test.rb
Rails klasörü
bundle install
bundle exec ruby -I"activerecord/test" activerecord/test/cases/relation/where_test.rb
Uygun klasörü yüklemeniz gerektiğini unutmayın: "activerecord / test" (test yaptığınız yer)