테스트 방법 하나만 실행하는 게 귀찮아서 미니 테스트runner.rb라는 대본을 써봤어요.
-n
을 사용하면 테스트 방법(테스트 용례) 하나만 실행할 수 있습니다.ruby test/test_foo.rb -n {メソッド名}
이때 파일 이름은 조개껍질에 대한 보완이 유효하기 때문에 빠르게 입력할 수 있지만 방법명은 조개껍질에 대한 보완이 무효입니다.그리고 수동 입력, 편집에서 열린 테스트 코드와 파일의grep 결과를 복사하면 어쨌든 번거롭다.
그래서 대본을 하나 썼어요.
사용법
ruby minitest_runner.rb
ruby minitest_runner.rb {ファイルの番号} {メソッドの番号}
처럼 매개 변수로 파일과 방법의 번호를 지정할 때 상호작용이 되지 않습니다.번호를 알았으니 몇 번을 반복하고 싶으면 이렇게.실행 예
예로Rake 만들어 본 것.
$ ruby minitest_runner.rb
----
files:
(0) . / test / test_private_reader.rb (0)
(1) . / test / test_rake.rb (1)
(2) . / test / test_rake_application.rb (2)
... 長いので途中省略 ...
(43) . / test / test_rake_win32.rb (43)
(44) . / test / test_thread_history_display.rb (44)
(45) . / test / test_trace_output.rb (45)
Select item: 44 ... 番号を入力する
----
methods:
(0) test_banner (0)
(1) test_item_queued (1)
(2) test_item_dequeued (2)
(3) test_multiple_items (3)
(4) test_waiting (4)
(5) test_continue (5)
(6) test_thread_deleted (6)
(7) test_thread_created (7)
Select item: 6 ... 番号を入力する
----
bundle exec ruby ./test/test_thread_history_display.rb -n test_thread_deleted ... 実際に実行されるコマンド
----
Run options: -n test_thread_deleted --seed 62390
# Running:
.
Finished in 0.001000s, 999.5052 runs/s, 1999.0104 assertions/s.
1 runs, 2 assertions, 0 failures, 0 errors, 0 skips
출처
10분 정도 아무렇게나 쓴 것이라 항목에 따라 작동이 안 될 수도 있지만 필요하면 매번 수정할 수 있다.
# minitest_runner.rb
def select_item(title, items)
puts "----"
puts "#{title}:"
# 候補一覧を表示
items
.map { |item| item.gsub("/", " / ") } # パスの区切りを見やすく
.each_with_index { |item, i| puts " (#{i}) #{item} (#{i})" }
# ユーザの入力を受け取る
puts ""
print "Select item: "
input = $stdin.gets
raise if /\d+/ !~ input
items[input.to_i]
end
def select_file(idx)
files = Dir.glob("./test/**/test_*.rb").sort
if idx
files[idx.to_i]
else
select_item("files", files)
end
end
def select_method(file, idx)
method_lines =
File.read(file).each_line
.select { |line| /def test_.+/ =~ line }
.map { |line| line.sub(/def /, "").strip }
method_line =
if idx
method_lines[idx.to_i]
else
select_item("methods", method_lines)
end
md = method_line.match(/(test_[a-z0-9_]+)/)
md[1]
end
# --------------------------------
file_idx, method_idx = ARGV
file = select_file(file_idx)
method = select_method(file, method_idx)
cmd = ""
cmd << "bundle exec " if File.exist?("./Gemfile")
cmd << "ruby #{file} -n #{method}"
puts "----"
puts cmd
puts "----"
system cmd
exit $?.exitstatus unless $?.success?
루비와 관련된 기타 내용
Reference
이 문제에 관하여(테스트 방법 하나만 실행하는 게 귀찮아서 미니 테스트runner.rb라는 대본을 써봤어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/sonota88/articles/d01178f090c6b6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)