Mogę uruchomić wszystkie testy w jednym pliku za pomocą:
rake test TEST=path/to/test_file.rb
Jeśli jednak chcę uruchomić tylko jeden test w tym pliku, jak mam to zrobić?
Szukam podobnej funkcjonalności do:
rspec path/to/test_file.rb -l 25
Mogę uruchomić wszystkie testy w jednym pliku za pomocą:
rake test TEST=path/to/test_file.rb
Jeśli jednak chcę uruchomić tylko jeden test w tym pliku, jak mam to zrobić?
Szukam podobnej funkcjonalności do:
rspec path/to/test_file.rb -l 25
Odpowiedzi:
Szukam podobnej funkcjonalności do rspec ścieżka / do / plik.rb -l 25
Tak! Użyj perełki „m” Nicka Quaranto . Dzięki niemu możesz powiedzieć:
m spec/my_spec.rb:25
m
obecnie nie działa w tym programie Minitest 5.0 .
Polecenie powinno być:
% rake test TEST=test/test_foobar.rb TESTOPTS="--name=test_foobar1 -v"
TESTOPTS=...
z dala
-v
robi?
Czy próbowałeś:
ruby path/to/test_file.rb --name test_method_name
specify {}
? Pojawiają się po prostu jako test_0001_anonymous
... i może być ich wiele, test_0001_anonymous
jeśli ta sama składnia jest używana w wielu blokach opisu ... jakieś sugestie dotyczące uruchamiania pojedynczych testów w tego rodzaju środowisku?
cannot load such file -- test_helper
.
ruby -Itest path/to/tc_file.rb --name test_method_name
jak stackoverflow.com/a/15714985/327786
bundle exec ruby -I lib path/to --name test_fit
Nie jest wymagany klejnot:
ruby -Itest test/lib/test.rb --name /some_test/
Źródło: http://blog.arvidandersson.se/2012/03/28/minimalicous-testing-in-ruby-1-9
To jedna z rzeczy, które przeszkadzają mi w kwestii string name definition
w testach.
Kiedy masz:
def test_my_test
end
zawsze wiesz, jak nazywa się Twój test, więc możesz go wykonać w ten sposób:
ruby my_test -n test_my_test
Ale kiedy masz coś takiego:
it "my test" do
end
nigdy nie jesteś pewien, jak ten test jest naprawdę nazwany wewnętrznie, więc nie możesz użyć rozszerzenia -n
opcji tylko bezpośrednio.
Aby dowiedzieć się, jak ten test jest nazywany wewnętrznie, masz tylko jedną opcję: wykonaj cały plik, aby spróbować znaleźć informacje w dziennikach.
Moje obejście polega (tymczasowo) na dodaniu czegoś do nazwy testu, na przykład:
it "my test xxx" do
end
a następnie użyj wersji RegEx parametru „-n”, na przykład:
ruby my_test.rb -n /xxx/
__method__
w kontekście aktualnie wykonywanej metody (w tym przypadku twojego testu). Obecne wdrożenie skutkuje czymś w rodzaju "does not break my stuff".gsub(" ", "_").prepend("test_")
. Następnie uruchom na przykład ruby -Itest test/integration/stuff_flow_test.rb --name test_does_not_break_my_stuff
.
Jeśli używasz MiniTest z Railsami 5+, najlepszym sposobem na uruchomienie wszystkich testów w jednym pliku jest:
bin/rails test path/to/test_file.rb
A dla pojedynczego testu (np. W linii 25):
bin/rails test path/to/test_file.rb:25
Zobacz http://guides.rubyonrails.org/testing.html#the-rails-test-runner
Można to zrobić na dwa sposoby:
Rake::TestTask
cel, aby użyć innego programu ładującego testy.Rake::TestTask
(od rake 0.8.7) teoretycznie jest w stanie przekazać dodatkowe opcje MiniTest::Unit
za pomocą"TESTOPTS=blah-blah"
możliwością linii polecenia, na przykład:
% rake test TEST = test / test_foobar.rb TESTOPTS = "- name test_foobar1 -v"
W praktyce opcja --name
(filtr dla nazw testów) nie zadziała z powodu rake'u. Aby to naprawić, musisz napisać małą małpkę w swoim Rakefile:
# overriding the default rake tests loader
class Rake::TestTask
def rake_loader
'test/my-minitest-loader.rb'
end
end
# our usual test terget
Rake::TestTask.new {|i|
i.test_files = FileList['test/test_*.rb']
i.verbose = true
}
Ta poprawka wymaga utworzenia pliku test/my-minitest-loader.rb
:
ARGV.each { |f|
break if f =~ /^-/
load f
}
Aby wydrukować wszystkie możliwe opcje programu Minitest, wpisz
% ruby -r minitest / autorun -e '' - --help
rake
nowszą wersją (0.9.2) i nie jest wymagana żadna łatka małpa.
TESTOPTS="--name test_foobar"
nie działa, ale TESTOPTS="--name=test_foobar"
działa.
Możesz przejść, --name
aby uruchomić test, używając jego nazwy lub numeru w nazwie:
-n, --name PATTERN Filter run on /regexp/ or string.
na przykład:
$ ruby spec/stories/foo_spec.rb --name 3
FAIL (0:00:00.022) test_0003_has foo
Expected: "foo"
Actual: nil
Ta flaga jest udokumentowana w pliku README programu Minitest .
Jeśli używasz Turn gem z minitestem, po prostu upewnij się, że używasz Turn.config.pattern
opcji, ponieważ runner Turn Minitest nie obsługuje opcji --name w ARG.
name
opcję. Dzięki! Ponieważ Turn nie jest już utrzymywany, planuję migrację do minitest-reporters
Szukam podobnej funkcjonalności do:
rspec ścieżka / do / plik_testowy.rb -l 25
Jest to klejnot, który robi dokładnie to: minitest-line
.
gem install minitest-line
ruby test/my_file -l 5
używam ruby /path/to/test -n /distinguishable word/
Edycja:
-n
to skrót dla --name
. distinguishable word
może to być dowolny ciąg, który umieścisz w opisie testu, zwykle używam jakiegoś przypadkowego słowa, o którym wiem, że nie będzie obecne w opisach innych testów.
-n
parametr?
--name
. Po prostu wygoda. Szczególnie przydatne w przypadku / regex /, zwykle po prostu umieszczam jakieś przypadkowe słowo w nazwie testu (wiem, że nie będzie ono obecne w opisach innych testów).
Następujące będzie działać
def test_abc
end
test "hello world"
end
To może przebiegać
bundle exec ruby -I test path/to/test -n test_abc
bundle exec ruby -I test path/to/test -n test_hello_word
rails test path/to/test_file.rb:25
zobacz @Derek_Hill ans - pobrane z guide.rubyonrails.org/testing.html#the-rails-test-runner