Antworten:
HINWEIS: Dadurch wird der Test nicht über ausgeführt rake
. Code, den Sie haben, Rakefile
wird also NICHT ausgeführt.
Verwenden Sie den folgenden Befehl aus dem Hauptverzeichnis Ihres Rails-Projekts, um einen einzelnen Test auszuführen:
ruby -I test test/unit/my_model_test.rb -n test_name
Dadurch wird ein einzelner Test mit dem Namen "name" ausgeführt, der in der MyModelTest-Klasse in der angegebenen Datei definiert ist. Der Testname wird gebildet, indem der Testname mit dem Wort "test" vorangestellt und die Wörter durch Unterstriche getrennt werden. Beispielsweise:
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
Sie können beide Tests ausführen über:
ruby -I test test/unit/my_model_test.rb
und nur der zweite Test über
ruby -I test test/unit/my_model_test.rb -n test_invalid_with_bad_attributes
0 tests, 0 assertions, 0 failures, 0 errors
. Schienen 3.0.7.
-n "/good/"
. Das Entkommen von Shell macht immer Spaß, daher halte ich mich eher an einfache reguläre Ausdrücke, aber es ist weitaus einfacher, als ständig den vollständigen Testnamen aufzuschreiben.
test/
Ordner enthält. Wenn ich zum Beispiel den Test ausführen möchte, activesupport/test/core_ext/array_ext_test.rb
sollte ich activesupport/
zuerst dabei sein.
-n "/good/"
hat funktioniert.
Führen Sie eine Testdatei aus :
rake test TEST=tests/functional/accounts_test.rb
Führen Sie einen einzelnen Test in einer Testdatei aus:
rake test TEST=tests/functional/accounts_test.rb TESTOPTS="-n /paid accounts/"
(Aus @Puhlzes Kommentar.)
rake test TEST=tests/functional/accounts_test.rb TESTOPTS="-n '/paid accounts/'"
( /paid accounts/
in einfachen Anführungszeichen)
Für Schienen 5:
rails test test/models/my_model.rb
bin/rails test test/models/user_test.rb:27
Dank @James scheint die Antwort zu sein:
rails test test/models/my_model.rb:22
Angenommen, 22 ist die Zeilennummer des gegebenen Tests. Laut Schienen helfen:
$ rails test --help
Sie können einen einzelnen Test ausführen, indem Sie eine Zeilennummer an einen Dateinamen anhängen:
bin/rails test test/models/user_test.rb:27
Beachten Sie außerdem, dass Ihr Test von ActionDispatch :: IntegrationTest erben sollte, damit dies funktioniert (das war mein Fehler):
class NexApiTest < ActionDispatch::IntegrationTest
.
.
.
In Schienen 5,
Ich habe auf diese Weise eine einzelne Testdatei ausgeführt (alle Tests in einer Datei).
rails test -n /TopicsControllerTest/ -v
Schauen Sie hier https://stackoverflow.com/a/41183694/3626659
So führen Sie einen einzelnen Test in der eigentlichen Rails-Suite aus:
bundle exec ruby -I"railties/test" actionpack/test/template/form_options_helper_test.rb
Das war eine dumme Mitternachtsfrage von mir. Rails gibt freundlicherweise den Befehl aus, den es ausführt rake test
. Der Rest ist eine Übung zum Ausschneiden und Einfügen.
~/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"
Der beste Weg ist, direkt in die Anleitungen zu schauen: 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
Wenn Sie einen einzelnen Test ausführen möchten, können Sie diese einfach als reguläres Ruby-Skript ausführen
ruby actionmailer/test/mail_layout_test.rb
Sie können auch eine ganze Suite (z. B. ActiveRecord oder ActionMailer) ausführen, indem Sie cd
-ing in das Verzeichnis eingeben und rake test
dort ausführen .
require File.join(File.dirname(__FILE__), '..', 'test_helper')
cd
-ing in. Nur um klar zu sein (ich bin nicht sicher, ob ich das falsch lese, aber Sie haben "generierte Testdateien" gesagt), dies ist für die Rails-Bibliothek selbst, nicht für ein Rails-Projekt.
Greifen Sie zuerst auf den Ordner der Bibliothek zu, die Sie testen möchten (dies ist wichtig), und führen Sie dann Folgendes aus:
~/Projects/rails/actionview (master)$ ruby -I test test/template/number_helper_test.rb
Rails-Ordner
bundle install
bundle exec ruby -I"activerecord/test" activerecord/test/cases/relation/where_test.rb
Beachten Sie, dass Sie den entsprechenden Ordner laden müssen: "activerecord / test" (wo Sie test haben)