prosource

MiniTest에서 단일 테스트를 실행할 수 있습니까?

probook 2023. 7. 2. 20:49
반응형

MiniTest에서 단일 테스트를 실행할 수 있습니까?

다음을 사용하여 모든 테스트를 단일 파일로 실행할 수 있습니다.

rake test TEST=path/to/test_file.rb

그러나 해당 파일에서 테스트를 하나만 실행하려면 어떻게 해야 합니까?

다음과 유사한 기능을 찾고 있습니다.

rspec path/to/test_file.rb -l 25

명령은 다음과 같아야 합니다.

% rake test TEST=test/test_foobar.rb TESTOPTS="--name=test_foobar1 -v"

시도해 보셨습니까?

ruby path/to/test_file.rb --name test_method_name

필요하지 .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/

rspec path/to/file.rb -l 25와 유사한 기능을 찾고 있습니다.

닉 Quaranto의 "m" 보석으로 당신은 다음과 같이 말할 수 있습니다.

m spec/my_spec.rb:25

MiniTest with Rails 5+를 사용하는 경우 단일 파일에서 모든 테스트를 실행하는 가장 좋은 방법은 다음과 같습니다.

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 test TEST=test/path/to/file.rb

저도 사용했습니다.

ruby -I"lib:test" test/path/to/file.rb

더 잘 보이기 위해.

합격할 수 있습니다--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에 문서화되어 있습니다.

두 가지 방법이 있습니다.

  1. '수동으로' 테스트를 실행합니다(Andrew Grimm의 답변 참조).
  2. Rake::TestTask다른 테스트 로더를 사용합니다.

Rake::TestTask( 0에서) 이론적으로 을 (레이크 0.8.7로) 할 수 에서) 이론적으로 추가 옵션을 전달할 수 있습니다.MiniTest::Unit"TESTOPTS=blah-blah"명령줄 옵션(예:

레이크 테스트 TEST=test/test_foobar.rb TESTOPTS="--name test_foobar1-v"

인 로제션, 은옵실--name레이크 내부로 인해 (테스트 이름 필터)가 작동하지 않습니다.Rake 원숭이 패치를 Rake 파일에 작은 원숭이 패치를 작성해야 .

# 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 -rminitest/companyun -e ' -- --help

사용합니다ruby /path/to/test -n /distinguishable word/

편집:-n는 의줄입니다말의 입니다.--name.distinguishable word테스트 설명에 입력한 문자열이 될 수 있습니다. 다른 테스트 설명에는 없는 임의의 단어를 주로 사용합니다.

저는 Rails Version 4.2.11.3과 Ruby Version 2.4.7p357에 있습니다.

밑에 하나는 저한테 효과가 있었어요.

ruby -Itest <relative_minitest_file_path> --name /<test_name>/

최소 테스트와 함께 보석 돌리기를 사용하는 경우 반드시 사용하십시오.Turn.config.patternTurn Minitest runner가 ARG의 --name 옵션을 존중하지 않기 때문에 옵션입니다.

다음과 유사한 기능을 찾고 있습니다.

rspec 경로/to/test_file.dll - l 25

바로 그런 역할을 하는 보석이 있습니다.minitest-line.

gem install minitest-line
ruby test/my_file -l 5

https://github.com/judofyr/minitest-line#minitest-line 에서

다음이 작동합니다.

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

gem minitest-focus를 설치하고 아래와 같이 focus on test/spec 키워드를 사용하여 특정 테스트만 실행합니다.

focus
def test
end


focus
it "test" do
end

이렇게 하면 명령줄 인수를 전달할 필요가 없습니다.

언급URL : https://stackoverflow.com/questions/5285711/is-it-possible-to-run-a-single-test-in-minitest

반응형