Jawaban:
CATATAN: Ini tidak menjalankan tes via rake
. Jadi kode apa pun yang Anda miliki tidak Rakefile
akan dijalankan.
Untuk menjalankan tes tunggal, gunakan perintah berikut dari direktori utama proyek rails Anda:
ruby -I test test/unit/my_model_test.rb -n test_name
Ini menjalankan tes tunggal bernama "nama", didefinisikan dalam kelas MyModelTest dalam file yang ditentukan. Test_name dibentuk dengan mengambil nama tes, menambahkannya dengan kata "test", lalu memisahkan kata-kata dengan garis bawah. Sebagai contoh:
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
Anda dapat menjalankan kedua tes melalui:
ruby -I test test/unit/my_model_test.rb
dan hanya tes kedua via
ruby -I test test/unit/my_model_test.rb -n test_invalid_with_bad_attributes
0 tests, 0 assertions, 0 failures, 0 errors
. Rails 3.0.7.
-n "/good/"
. Shell melarikan diri selalu menyenangkan, jadi saya cenderung tetap pada regex sederhana, tetapi jauh lebih mudah daripada menulis nama tes penuh sepanjang waktu.
test/
folder. Misalnya, jika saya ingin menjalankan tes activesupport/test/core_ext/array_ext_test.rb
saya harus activesupport/
terlebih dahulu.
-n "/good/"
bekerja.
Jalankan file uji :
rake test TEST=tests/functional/accounts_test.rb
Jalankan uji tunggal dalam file uji:
rake test TEST=tests/functional/accounts_test.rb TESTOPTS="-n /paid accounts/"
(Dari komentar @Puhlze.)
rake test TEST=tests/functional/accounts_test.rb TESTOPTS="-n '/paid accounts/'"
(lampirkan /paid accounts/
dengan tanda kutip tunggal)
Untuk rel 5:
rails test test/models/my_model.rb
bin/rails test test/models/user_test.rb:27
Berkat @James, jawabannya sepertinya:
rails test test/models/my_model.rb:22
Anggap 22 adalah nomor baris dari tes yang diberikan. Menurut bantuan rel:
$ rails test --help
Anda dapat menjalankan satu pengujian dengan menambahkan nomor baris ke nama file:
bin/rails test test/models/user_test.rb:27
Harap perhatikan juga bahwa pengujian Anda harus diturunkan dari ActionDispatch :: IntegrationTest agar ini berfungsi (Itu kesalahan saya):
class NexApiTest < ActionDispatch::IntegrationTest
.
.
.
Di rel 5,
Saya menggunakan cara ini untuk menjalankan file uji tunggal (semua tes dalam satu file)
rails test -n /TopicsControllerTest/ -v
lihat di sini https://stackoverflow.com/a/41183694/3626659
Untuk menjalankan tes tunggal di suite Rails aktual:
bundle exec ruby -I"railties/test" actionpack/test/template/form_options_helper_test.rb
Cara terbaik adalah dengan melihat langsung ke panduan: 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
Itu pertanyaan konyol saya di tengah malam. Rails dengan ramah mencetak perintah yang dijalankannya rake test
. Sisanya adalah latihan memotong dan menempel.
~/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"
Jika Anda ingin menjalankan tes tunggal, Anda bisa menjalankannya sebagai skrip Ruby biasa
ruby actionmailer/test/mail_layout_test.rb
Anda juga dapat menjalankan seluruh rangkaian (mis. ActiveRecord atau ActionMailer) dengan cd
-ing ke direktori dan berjalan rake test
di dalam sana.
require File.join(File.dirname(__FILE__), '..', 'test_helper')
cd
-in tidak. Hanya untuk memperjelas (saya tidak yakin jika saya salah membaca ini, tetapi Anda memang mengatakan "file tes yang dihasilkan"), ini untuk perpustakaan Rails sendiri, bukan proyek Rails.
Pertama, akses folder lib yang ingin Anda uji (ini penting) dan kemudian jalankan:
~/Projects/rails/actionview (master)$ ruby -I test test/template/number_helper_test.rb
Folder rel
bundle install
bundle exec ruby -I"activerecord/test" activerecord/test/cases/relation/where_test.rb
Catatan Anda perlu memuat folder yang sesuai: "activerecord / test" (di mana Anda memiliki tes)