답변:
rspec path / to / file.rb -l 25와 유사한 기능을 찾고 있습니다.
예! Nick Quaranto의 "m"gem을 사용하십시오 . 그것으로 당신은 말할 수 있습니다 :
m spec/my_spec.rb:25
m
현재이 Minitest 5.0에서는 작동하지 않습니다 .
명령은 다음과 같아야합니다.
% rake test TEST=test/test_foobar.rb TESTOPTS="--name=test_foobar1 -v"
TESTOPTS=...
멀리
-v
합니까?
시도해 보셨습니까?
ruby path/to/test_file.rb --name test_method_name
specify {}
어떻습니까? 그것들은 단지 test_0001_anonymous
... 로 나타나고 test_0001_anonymous
동일한 구문이 다중 디스크립션 블록에 사용되면 여러 가지가있을 수 있습니다 ...이 종류의 환경에서 단일 테스트를 실행하기위한 제안?
cannot load such file -- test_helper
.
bundle exec ruby -I lib path/to --name test_fit
보석이 필요하지 않습니다 :
ruby -Itest test/lib/test.rb --name /some_test/
출처 : http://blog.arvidandersson.se/2012/03/28/minimalicous-testing-in-ruby-1-9
이것은 string name definition
테스트에서 나를 귀찮게하는 것 중 하나입니다 .
당신이 가지고 있을때:
def test_my_test
end
테스트 이름을 항상 알고 있으므로 다음과 같이 실행할 수 있습니다.
ruby my_test -n test_my_test
그러나 다음과 같은 것이있을 때 :
it "my test" do
end
이 테스트의 이름이 실제로 내부적으로 어떻게 지정되는지 확실하지 않으므로 -n
옵션을 직접 사용할 수 없습니다 .
이 테스트의 이름이 내부적으로 어떻게 지정되는지 알려면 옵션 만 있습니다. 전체 파일을 실행하여 로그를 살펴보십시오.
내 해결 방법은 다음과 같이 매우 독창적 인 테스트 이름에 무언가를 추가하는 것입니다.
it "my test xxx" do
end
그런 다음 '-n'매개 변수 의 RegEx 버전 을 사용하십시오 .
ruby my_test.rb -n /xxx/
__method__
현재 실행중인 메소드 (이 경우 테스트)의 컨텍스트 내에서 호출 하여 이를 확인할 수 있습니다 . 본 구현은 다음과 같은 결과를 낳는다 "does not break my stuff".gsub(" ", "_").prepend("test_")
. 그런 다음 예를 들어을 실행하십시오 ruby -Itest test/integration/stuff_flow_test.rb --name test_does_not_break_my_stuff
.
Rails 5+와 함께 MiniTest를 사용하는 경우 단일 파일에서 모든 테스트를 실행하는 가장 좋은 방법은 다음과 같습니다.
bin/rails test path/to/test_file.rb
그리고 단일 테스트 (예 : 25 행) :
bin/rails test path/to/test_file.rb:25
http://guides.rubyonrails.org/testing.html#the-rails-test-runner를 참조하십시오
두 가지 방법이 있습니다.
Rake::TestTask
다른 테스트 로더를 사용하도록 대상을 해킹하십시오 .Rake::TestTask
(rake 0.8.7부터) 이론적 MiniTest::Unit
으로 "TESTOPTS=blah-blah"
명령 줄 옵션 을 사용하여 추가 옵션을 전달할 수 있습니다 .
레이크 테스트 % TEST = test / test_foobar.rb TESTOPTS = "-name test_foobar1 -v"
실제로 --name
내부 (rake internals) 때문에 옵션 (테스트 이름에 대한 필터)이 작동하지 않습니다. 이를 해결하려면 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
}
이 패치는 파일을 생성해야합니다 test/my-minitest-loader.rb
:
ARGV.each { |f|
break if f =~ /^-/
load f
}
Minitest에 가능한 모든 옵션을 인쇄하려면 다음을 입력하십시오.
% ruby -r minitest / autorun -e ''---help
rake
(0.9.2)에서 올바르게 작동 하며 원숭이 패치가 필요하지 않습니다.
TESTOPTS="--name test_foobar"
작동하지 않지만 작동 TESTOPTS="--name=test_foobar"
합니다.
--name
이름 또는 이름 내의 숫자로 테스트를 실행하도록 전달할 수 있습니다 .
-n, --name PATTERN Filter run on /regexp/ or string.
예 :
$ ruby spec/stories/foo_spec.rb --name 3
FAIL (0:00:00.022) test_0003_has foo
Expected: "foo"
Actual: nil
이 플래그는 Minitest의 README에 문서화 되어 있습니다.
비슷한 기능을 찾고 있습니다.
rspec 경로 /to/test_file.rb -l 25
정확히 그렇게하는 보석이 있습니다 : minitest-line
.
gem install minitest-line
ruby test/my_file -l 5
나는 사용한다 ruby /path/to/test -n /distinguishable word/
편집 :
-n
의 줄임말입니다 --name
. distinguishable word
테스트 설명에 넣은 문자열이 될 수 있습니다. 일반적으로 다른 테스트 설명에는 표시되지 않는 임의의 단어를 사용합니다.
-n
매개 변수는 무엇을 의미합니까?
--name
. 편리한 것입니다. / regex /에 특히 유용합니다. 나는 보통 임의의 단어를 테스트 이름에 넣습니다 (다른 테스트 설명에는 나타나지 않음).
다음은 작동합니다
def test_abc
end
test "hello world"
end
이것은 다음에 의해 실행될 수 있습니다
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
참조 @Derek_Hill ANS -에서 가져온 guides.rubyonrails.org/testing.html#the-rails-test-runner