Posso eseguire tutti i test in un singolo file con:
rake test TEST=path/to/test_file.rb
Tuttavia, se volessi eseguire un solo test in quel file, come lo farei?
Sto cercando funzionalità simili a:
rspec path/to/test_file.rb -l 25
Posso eseguire tutti i test in un singolo file con:
rake test TEST=path/to/test_file.rb
Tuttavia, se volessi eseguire un solo test in quel file, come lo farei?
Sto cercando funzionalità simili a:
rspec path/to/test_file.rb -l 25
Risposte:
Sto cercando funzionalità simili a rspec path / to / file.rb -l 25
Sì! Usa la gemma "m" di Nick Quaranto . Con esso puoi dire:
m spec/my_spec.rb:25
m
attualmente non funziona con questo Minitest 5.0 .
Il comando dovrebbe essere:
% rake test TEST=test/test_foobar.rb TESTOPTS="--name=test_foobar1 -v"
TESTOPTS=...
via
-v
fa?
Hai provato:
ruby path/to/test_file.rb --name test_method_name
specify {}
? Questi vengono visualizzati come test_0001_anonymous
... e potrebbero esserci più messaggi test_0001_anonymous
se la stessa sintassi viene utilizzata in più blocchi descrittivi ... qualche suggerimento per l'esecuzione di test singoli in questo tipo di ambiente?
cannot load such file -- test_helper
.
ruby -Itest path/to/tc_file.rb --name test_method_name
come stackoverflow.com/a/15714985/327786
bundle exec ruby -I lib path/to --name test_fit
Nessuna gemma richiesta:
ruby -Itest test/lib/test.rb --name /some_test/
Fonte: http://blog.arvidandersson.se/2012/03/28/minimalicous-testing-in-ruby-1-9
Questa è una delle cose che mi danno fastidio string name definition
nei test in.
Quando hai:
def test_my_test
end
sai sempre come viene chiamato il tuo test in modo da poterlo eseguire in questo modo:
ruby my_test -n test_my_test
Ma quando hai qualcosa come:
it "my test" do
end
non si è mai sicuri di come questo test sia realmente chiamato internamente, quindi non è possibile utilizzare l' -n
opzione direttamente.
Per sapere come questo test viene chiamato internamente hai solo un'opzione: esegui l'intero file per provare a capire guardando nei registri.
La mia soluzione alternativa è (temporaneamente) aggiungere qualcosa al nome del test univoco come:
it "my test xxx" do
end
e quindi usa la versione RegEx del parametro '-n' come:
ruby my_test.rb -n /xxx/
__method__
nel contesto del metodo attualmente in esecuzione (il tuo test, in questo caso). La presente implementazione si traduce in qualcosa di simile "does not break my stuff".gsub(" ", "_").prepend("test_")
. Quindi eseguire, ad esempio ruby -Itest test/integration/stuff_flow_test.rb --name test_does_not_break_my_stuff
,.
Se si utilizza MiniTest con Rails 5+, il modo migliore per eseguire tutti i test in un singolo file è:
bin/rails test path/to/test_file.rb
E per un singolo test (ad es. Sulla linea 25):
bin/rails test path/to/test_file.rb:25
Vedi http://guides.rubyonrails.org/testing.html#the-rails-test-runner
Ci sono 2 modi per farlo:
Rake::TestTask
target per utilizzare un caricatore di test diverso.Rake::TestTask
(dal rake 0.8.7) teoricamente è in grado di passare opzioni aggiuntive a MiniTest::Unit
con "TESTOPTS=blah-blah"
un'opzione della riga di comando, ad esempio:
% rake test TEST = test / test_foobar.rb TESTOPTS = "- nome test_foobar1 -v"
In pratica, l'opzione --name
(un filtro per i nomi dei test) non funzionerà, a causa dei rake interni. Per risolvere il problema, dovrai scrivere una piccola patch di scimmia nel tuo 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
}
Questa patch richiede di creare un file test/my-minitest-loader.rb
:
ARGV.each { |f|
break if f =~ /^-/
load f
}
Per stampare tutte le opzioni possibili per Minitest, digitare
% ruby -r minitest / autorun -e '' - --help
rake
(0.9.2) e non è richiesta alcuna patch scimmia.
TESTOPTS="--name test_foobar"
non funziona, ma TESTOPTS="--name=test_foobar"
funziona.
Puoi passare --name
per eseguire un test con il suo nome o un numero all'interno del suo nome:
-n, --name PATTERN Filter run on /regexp/ or string.
per esempio:
$ ruby spec/stories/foo_spec.rb --name 3
FAIL (0:00:00.022) test_0003_has foo
Expected: "foo"
Actual: nil
Questa bandiera è documentata nel README di Minitest .
Se stai usando Turn gem with minitest, assicurati di usare l' Turn.config.pattern
opzione poiché Turn Minitest runner non rispetta l'opzione --name negli ARG.
name
opzione. Grazie! Essendo quel turno non viene più mantenuto, ho intenzione di migrare verso i reporter più
Sto cercando funzionalità simili a:
percorso rspec / to / test_file.rb -l 25
V'è una gemma che fa esattamente questo: minitest-line
.
gem install minitest-line
ruby test/my_file -l 5
Io uso ruby /path/to/test -n /distinguishable word/
Modifica:
-n
è una scorciatoia per --name
. distinguishable word
può essere una qualsiasi stringa inserita nella descrizione del test, di solito uso qualche parola casuale che so che non sarà presente nelle descrizioni di altri test.
-n
parametro?
--name
. Solo una cosa di convenienza. Particolarmente utile con / regex /, di solito inserisco semplicemente una parola a caso nel nome di un test (che so non sarà presente nelle descrizioni di altri test).
Di seguito funzionerà
def test_abc
end
test "hello world"
end
Questo può essere eseguito da
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
vedono @Derek_Hill ans - tratto da guide.rubyonrails.org/testing.html#the-rails-test-runner